我正在使用AFNetworking 2进行使用REST API的iOS项目。当请求失败时,我无法获得身体响应。
我看到这个SO answer表示可以从userInfo
词典中检索到它。不幸的是,在我的情况下,我没有在响应正文的NSLocalizedRecoverySuggestion
字典中获得userInfo
键值。相反,我看到了一个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
中的回复正文?
答案 0 :(得分:3)
Quoting AFNetworking所有者:
(...)建议的方法是创建一个自定义响应序列化程序,将故障情况下的响应数据转换为适当的NSError对象。
您可以在另一个AFNetworking问题上看到this answer,了解如何将其与会话管理器集成,以及this repository了解如何实施它。