Mac*_*y18 7 iphone objective-c ios afnetworking afnetworking-2
我使用AFHTTPRequestOperationManager了一个POST请求.现在我故意输入错误的信息来处理400错误代码.现在,Web服务实际上返回一个JSON消息,向用户解释他们做错了什么.我非常想让这个JSON显示消息UIAlertView.但是,失败块:
[operationManager POST:ServerURL parameters:parameters success:^(AFHTTPRequestOperation *operation, id responseObject) {
NSLog(@"Success: Status Code: %d", operation.response.statusCode);
}
failure:^(AFHTTPRequestOperation *operation, NSError *error) {
NSLog(@"Failed: Status Code: %d", operation.response.statusCode);
}];
Run Code Online (Sandbox Code Playgroud)
不传递响应对象,如成功块中的响应对象.那么有谁知道如何访问Web服务返回的带有400错误的JSON?在NSError *error简单地给了我Request failed: bad request (400),而不是JSON返回.
任何帮助将不胜感激,
迈克
查看代码- responseObject,似乎HTTP错误阻止了它的填充.您可以responseData直接抓取并自己解析,但我会说这是一个错误或一个很好的增强请求.(看起来- responseObject大概应该检查self.responseSerializationError,不self.error,决定是否应该尝试建立一个响应对象时.)
您可以执行以下任一解决方案
1)将设置acceptableStatusCodes为接受您的400 statusCode,然后在成功块中进行处理
manager.responseSerializer.acceptableStatusCodes = [NSIndexSet indexSetWithIndex:400];
Run Code Online (Sandbox Code Playgroud)
2)创建一个自定义ResponseSerializer,例如JSONResponseSerializerWithData,将responseObject插入NSError userInfo中,并在失败块中进行处理
专业提示:AFNetworking是开源的,只需看一下AFHTTPRequestOperation的方法
setCompletionBlockWithSuccess:failure:
responseObject
error
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
7889 次 |
| 最近记录: |