ios swift 2.1 - 无法发送带有正文的补丁请求

Posted

技术标签:

【中文标题】ios swift 2.1 - 无法发送带有正文的补丁请求【英文标题】:ios swift 2.1 - unable to send Patch request with body 【发布时间】:2016-02-02 13:51:17 【问题描述】:

我正在尝试为我的 web 服务编写一个 http rest 客户端,我需要发送一些带有正文中数据的 PATCH 请求。

我正在使用 JUST 库发送请求 (https://github.com/JustHTTP/Just)

我的快速应用程序没有看到请求。 这是一些代码(我正在操场上进行测试,其他类型的请求(例如 put、post...)一切都很好)

headers = ["accept":"application/json","content-type":"application/json","authorization":"key"] //key is ok

var data = ["id":3, "quantity":6] 

var r =   Just.patch("http://api.marketcloud.it/v0/carts/1233", headers:headers, data:data) //1233 is a cart Id

print(r)
print(r.json)

Just.patch 方法返回一个 HTTPResult 对象。 这说'选项http://api.marketcloud.it/v0/carts/13234 200'

这个对象也应该包含一个json,但它是'nil'。

在服务器端,我的快速应用程序没有收到请求(它只记录一个“选项”,但没有其他内容)。

这可能是与游乐场相关的问题吗?还是只是相关的?

感谢您的建议

【问题讨论】:

您的请求的状态码是 200 (print(r.statusCode)),所以如果您仍然看不到数据,我想问题出在服务器端。 谢谢@Eric D.,不幸的是我很确定问题不是服务器端的,因为我有一个执行相同类型请求的javascript客户端并且没有与“补丁”相关的问题那些.. 你可能确实是对的。出于好奇,我将 patch 替换为 put 以满足您的要求,突然我们确实返回了一些 JSON - 我相信补丁也应该发生。 你是对的,在文档中有一些使用 PUT 方法的调用。即使出现错误,JSON 也应该返回,并且它会返回。我想这些问题与 Swift 的 Patch 调用密切相关。我不确定这是否是“只是”错误,我想我会尝试另一种方式来执行补丁请求以便更好地理解...... 【参考方案1】:

我设法通过 twitter 联系了图书馆的作者,他修复了错误并在不到 24 小时内回复了我!

这是该库的新版本。

https://github.com/JustHTTP/Just/releases

【讨论】:

以上是关于ios swift 2.1 - 无法发送带有正文的补丁请求的主要内容,如果未能解决你的问题,请参考以下文章

无法识别的选择器发送到实例 Swift 2.1

如何在 Alamofire 4.0 中仅使用参数和正文在 swift 中使用 POST 方法发送请求?

带有字符串正文的 ios HTTP Post

发送包含数组的数组 json 主体(Alamofire、Swift、iOS)

如何在 quickblox (Swift, iOS, xcode) 中实现发送图片

在 Swift 中使用 OHHTTPStubs 测试请求正文