在 AFNetworking 2 的失败块中访问 JSON 响应

Posted

技术标签:

【中文标题】在 AFNetworking 2 的失败块中访问 JSON 响应【英文标题】:Accessing the JSON response in the failure block of AFNetworking 2 【发布时间】:2013-12-03 18:13:29 【问题描述】:

使用 AFNetworking 2,当您在故障块中处理故障时,您如何访问从服务器返回的内容?在我的情况下,我发布到一个正在返回的 Rails 应用程序:

"number":["已被占用"]

如果我像这样使用 curl,我会得到这样的结果:curl -X POST -d "sales_order[number]=12345" http://localserver.dev/api/v1/sales_orders.json

我试图在 AFNetworking 2 中获取相同的 JSON。在通读 SO 之后,我设法通过检查失败块内的 [error userInfo] 来访问一些响应标头信息。

有谁知道我如何从故障块内部访问 "number":["is already taken"]?

这是我目前的块:

failure:^(NSURLSessionDataTask *task, NSError *error) 
    NSLog(@"Sales Order Failure");

    NSDictionary *userInfo = [error userInfo];

    for(NSString *key in [userInfo allKeys]) 
        NSLog(@"%@ - %@", key, [userInfo objectForKey:key]);
    
];

【问题讨论】:

【参考方案1】:

这是 AFNetworking 2.x 中的一个已知设计缺陷,已在 here 进行了讨论并提供了一些解决方法。

【讨论】:

以上是关于在 AFNetworking 2 的失败块中访问 JSON 响应的主要内容,如果未能解决你的问题,请参考以下文章

AFNetworking 2.0 从故障块中的代码 400 获取 JSON

为啥这个 AFNetworking 块中的变量都显示为 nil(快速)?

将块中异步接收的 JSON 对象传递给实例变量 - 在 iOS6 上使用 AFNetworking

以 JSON 字符串数组形式获取 AFNetworking 响应的结果

AFNetworking 2.0 和单元测试

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