AFNetworking 2 - 请求失败时没有响应正文

时间:2014-04-24 21:51:56

标签: ios objective-c api express afnetworking-2

我正在使用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中的回复正文?

1 个答案:

答案 0 :(得分:3)

Quoting AFNetworking所有者:

  

(...)建议的方法是创建一个自定义响应序列化程序,将故障情况下的响应数据转换为适当的NSError对象。

您可以在另一个AFNetworking问题上看到this answer,了解如何将其与会话管理器集成,以及this repository了解如何实施它。