- xml - AJAX/Jquery XML 解析
- 具有多重继承的 XML 模式
- .net - 枚举序列化 Json 与 XML
- XML 简单类型、简单内容、复杂类型、复杂内容
好吧,这会有点难以解释,所以请多多包涵...
我有一个 Rails 应用程序,其中包含为 ESRI ArcGIS javascript API 编写的大型 javascript 代码库,用于与存储在 ESRI ArcGIS Server 上的空间数据进行交互。 ESRI ArcGIS javascript API 使用通常称为“ArcGIS Server 代理”的东西将请求转发到需要基于 token 的身份验证或太长而无法在 URL 中直接处理的 ArcGIS Server 服务。 AGS 代理只是对传递给它的 URL 发出 HTTP 请求,将随原始请求一起传递的任何其他参数转发给 ArcGIS Server 服务,后者执行实际的繁重工作并使用 JSON 进行响应。关于AGS代理的更多信息,请引用以下page在 ArcGIS 资源中心。
鉴于 AGS 代理仅由 ESRI 在 ASP.Net、Java 和 PHP 风格中提供,我冒昧地将 AGS 代理编写为 Rails Controller 。我选择采用这种方法是因为 JSAPI 不支持跨域请求,并且出于托管原因,我不想在我的 Rails 应用程序中提供 PHP 服务或在 JRuby 之上运行我的应用程序。我的 Rails AGS 代理适用于我目前遇到的所有情况,但多部分请求除外,它与附件编辑器功能一起出现,如图 here 所示。 .
在尝试使多部分请求起作用时,我选择使用 Faraday 向 ArcGIS Server 服务发出 HTTP 请求,因为 Faraday 的简单性和对多部分请求的支持。我尝试执行多部分请求的代码如下:
# Configure the request
uri = URI.parse(url)
conn = Faraday.new(:url => ("http://" + uri.host.downcase)) do |faraday|
faraday.request :multipart
faraday.request :url_encoded
faraday.response :logger
faraday.adapter Faraday.default_adapter
end
# Make request
response = conn.post uri.path do |req|
req.body = agsparams
end
“agsparams”变量是传递给 ArcGIS Server 的参数散列。
当尝试执行此代码时,Ruby 在发出实际请求的行上出现以下错误,这是我目前遇到的问题:
NoMethodError (undefined method `local_path' for #ActionDispatch::Http::UploadedFile:0x007ffbe198fe60
当我将参数散列转储到 Controller 中时,它看起来类似于以下内容:
{
"attachment"=>#ActionDispatch::Http::UploadedFile:0x007ffbe198fe60
@original_filename="test_image.jpg",
@content_type="image/jpeg",
@headers="Content-Disposition: form-data; name=\"attachment\"; filename=\"test_image.jpg\"\r\nContent-Type: image/jpeg\r\n",
@tempfile=#File:/var/folders/mh/2mfy5nr54gngrzg06gzp1jcw0000gn/T/RackMultipart20120718-2772-xwbgjy,
"f"=>"json",
"http://arcgisserver.com/arcgis/rest/services/multitenant/test_organization/FeatureServer/0/4808/addAttachment"=>nil
}
(我删除了一些括号,以便它会显示在 StackOverflow 上。)
我不知道在哪里调用了“local_path”方法,因为我没有调用它,但我猜这是某种与我不理解的 ActionDispatch 关联的内置功能。 ActionDispatch 中是否有我需要覆盖的方法,如果有,我该怎么做?我有一种预感,当我真的只想将文件输入参数转发到 ArcGIS Server 以便 ArcGIS Server 执行上传时,ActionDispatch 正在尝试上传我指定的文件。我不认为我想使用 Faraday::UploadIO,因为我认为我只需要将参数转发到 ArcGIS Server,但我可能是错的。我从这里去哪里??
作为一些额外的尽职调查,我已经确认我的映射 javascript 可以与其他类型的 AGS 代理一起使用;我还使用 Wireshark 检查了工作中的多部分代理请求,并将这些请求与使用我的 Rails AGS 代理发出的请求进行了比较,它们看起来一致( header 和参数看起来正确)。我尝试添加附件的数据实际上已正确配置为接受附件。我被卡住了,真的需要一些帮助。
关于我的环境的一些信息:我的应用程序是在 Ruby 1.9.2 上用 Rails 3.2 编写的(我目前使用 CarrierWave 和 Fog 来处理应用程序其他非映射部分的附件,如果这很重要的话)。我正在尝试通过 ArcGIS JSAPI 2.8/Dojo 1.6 发布到运行 ArcGIS Server 10.1 的服务器。
提前致谢...
最佳答案
差点忘了这个问题。我最终通过重写请求以使用 Net::HTTP
并使用 multipart-post gem 解决了这个问题。当我需要做多部分请求时。 Net::HTTP::Post::Multipart
接受一个 UploadIO
对象,因此我只需打开附件临时文件并将其用作我的 POST 请求中的参数。问题解决了。
关于ruby - 使用 Rails 转发未经处理的多部分 HTTP 请求,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11553154/
据我所知,要将声音设置为铃声,应将其插入 MediaStore。在 MediaStore 中写入,需要 WRITE_EXTERNAL_STORAGE 权限。但是...有没有办法在不需要 WRITE_E
我只是想设置铃声。我不想授予 WRITE_SETTINGS 权限,我可以找到大部分答案来授予 WRITE_SETTINGS 权限但是我正在使用一个应用程序,该应用程序没有设置铃声的 WRITE_SET
我在 Windows 10 中以管理员身份运行 Android studio。AVD 是 Nexus 5X API 28。我正在尝试运行 flutter 演示,但设备下拉框仍然显示“无设备”,它只是有
我的应用程序构建于 spring-social-twitter允许用户使用 Twitter 登录的功能最近已停止工作。 我收到如下错误消息: Callback URL not approved for
我正在尝试使用 python-firebase 更新 Firebase库,但无法使用经过修改的示例代码进行身份验证: from firebase import firebase as fb auth
今天,当我尝试使用 GCC7 编译一个非常简单的 C++ 程序时,我遇到了一个非常奇怪的问题:程序没有向构造函数中的 vector 添加任何元素,当编译时没有优化(例如 -O0/-Og ) 来自 Re
简单问题:我正在尝试使用 Discord API 备份服务器(或公会,如果您使用官方术语)上的所有消息。 因此,我实现了 OAuth,没有任何问题,我有访问 token ,并且可以查询一些端点(我尝试
您好,我正在使用 msdn 中的以下代码供我公司内部使用: using System; public sealed class Singleton { private static volati
我们从 Google 的 GCM 服务中收到间歇性的 401 Unauthorized 错误。在过去,它 100% 的时间都有效。该问题可能与我们的路由器接受 IPv6 流量同时发生,但即使我们在适配
我有一个使用 Playwright + TS-Jest 设置 E2E 测试的项目。为了组织我的测试,我使用页面对象模型。结构看起来像这样: 我想在 tsconfig.json 中使用 TypeScri
我有一个后端应用程序在 Google Cloud Storage 中同步文件,我想在 javascript 中列出存储中的所有文件,而不需要从后端请求它们。我已经设置了 CORS,并且所有文件的 ac
我在尝试在私有(private) gitlab 存储库中发布 Artifact 时遇到问题。我正在使用 Maven 并使用个人访问 token 进行身份验证。当我运行 mvn deploy -s ~/
这是从 Google+ 登录中使用的 GoogleApiClient 获取 token 的传统方式: String token = GoogleAuthUtil.getToken(apiClient.
我在阅读 facebook Open Graph 文档后比较确定我不能让网站“订阅”公共(public)页面,除非该页面安装了我的应用程序。如果那是错误的,请告诉我。 我想做的是一个照片库,非常简单,
我是一名优秀的程序员,十分优秀!