AFNetworking 2 - 请求失败时没有响应正文
Posted
技术标签:
【中文标题】AFNetworking 2 - 请求失败时没有响应正文【英文标题】:AFNetworking 2 - No response body when request fails 【发布时间】:2014-04-24 21:51:55 【问题描述】:我将 AFNetworking 2 用于使用 REST API 的 ios 项目。当请求失败时,我无法获得正文响应。
我看到这个SO answer 说它可以从userInfo
字典中检索。不幸的是,在我的情况下,我没有在我的 userInfo
字典中获得带有响应正文的 NSLocalizedRecoverySuggestion
键值。相反,我看到了一个 AFNetworkingOperationFailingURLResponseErrorKey
键。
我的NSError
日志是
Error Domain=AFNetworkingErrorDomain Code=-1011 "Request failed: bad request (400)" UserInfo=0xbe471a0 NSErrorFailingURLKey=http://***.com/api/users, AFNetworkingOperationFailingURLResponseErrorKey=<NSHTTPURLResponse: 0xbc60e80> URL: http://***.com/api/users status code: 400, headers
Connection = "keep-alive";
"Content-Length" = 85;
"Content-Type" = "application/json; charset=utf-8";
Date = "Thu, 24 Apr 2014 21:36:57 GMT";
"X-Powered-By" = Express;
, NSLocalizedDescription=Request failed: bad request (400)
正如您从标题中看到的那样,我收到的是"Content-Type" = "application/json; charset=utf-8";
,所以其他answer 也不适用。
实际上Postman 中的正文响应如下所示:
"errorCode":100,"description":"There is already a registered user with that email."
后端是我自己在Node + Express中实现的。不过我在后端开发方面不是很有经验,所以也许我缺少一些东西或者我可以改变。
有谁知道为什么我在userInfo
中没有收到响应正文?
【问题讨论】:
【参考方案1】:QuotingAFNetworking所有者:
(...) 推荐的方法是创建一个自定义响应序列化程序,将失败情况下的响应数据转换为适当的 NSError 对象。
您可以在另一个 AFNetworking 问题上查看 this answer 以了解如何将其与您的会话管理器集成,并查看 this repository 以了解如何实施它。
【讨论】:
以上是关于AFNetworking 2 - 请求失败时没有响应正文的主要内容,如果未能解决你的问题,请参考以下文章
AFNetworking 2.0:NSLocalizedDescription=请求失败:不可接受的内容类型:文本/html
iOS - 连接 PHP 页面时 AFNetworking 失败
“请求失败:不可接受的内容类型:文本/html”使用 AFNetworking 2.0
请求失败:不可接受的内容类型:使用 AFNetworking 2.5 的图像/jpg
AFNetworking 问题:serialization.response Code=-1011 “请求失败:未找到 (404)”
带有 AFNetworking 的 iOS POST:NSLocalizedDescription=请求失败:内部服务器错误 (500)