1

提供一些背景知识:我正在构建一个 BlackBerry 前端来与后端 Web 服务通信,该服务构建为仅支持对许多重要资源的 PUT 请求而不是 POST 请求。

这个后端适用于 iOS,但我似乎无法在 BlackBerry 上创建 PUT 请求。通过 BlackBerry API,我已经能够使用以下代码创建 GET/POST 请求:

HttpConnection conn = (HttpConnection) Connector.open(URL);  
conn.setRequestMethod(HttpConnection.GET);

或者

conn.setRequestMethod(HttpConnection.POST);

看起来 HttpConnection 类应该支持一个 PUT 命令,如这里的 API 中所示。我尝试过手动设置conn.setRequestMethod("PUT");,但我不断从服务器收到 400 错误。

有谁知道如何为 BlackBerry 正确创建 PUT 请求?到目前为止,我在整个网络上的搜索还没有带回任何可用的解决方案。=(谢谢!

4

1 回答 1

1

HTTP 400 表示“由于语法错误,服务器无法理解请求。”。

那么,如果您使用 ,您能否确认您的代码可以正常工作conn.setRequestMethod(HttpConnection.POST);

这就是我问这个的原因:根据 RESTful Web 服务模式,区别应该在于 PUT 用于更新服务器上的资源,而 POST 用于在服务器上创建资源。因此,如果您的网络代码作为 POST 可以正常工作,那么它确认您的代码基本上是可以的。

另一点是“服务器端使用什么框架/技术?”。这可能很重要,因为浏览器本身不支持 PUT(仅 GET 和 POST),因此 Web 应用程序通常通过在 Web 表单中放置隐藏的表单字段(例如“_method=PUT”)来模拟 PUT。因此,当用户单击提交时,浏览器会执行一个包含“_method=PUT”参数的 POST,以便服务器可以识别它是一个 PUT。这在 Rails 中使用,我怀疑其他人会做一些类似的事情。如果这是您的情况,那么只需尝试将您的 POST 参数附加到您的网络应用程序参数所需的参数(例如“_method = PUT”)。

于 2011-07-13T13:52:38.520 回答