AFNetworking 响应格式不正确
Posted
技术标签:
【中文标题】AFNetworking 响应格式不正确【英文标题】:AFNetworking response not in proper format 【发布时间】:2017-01-31 05:21:13 【问题描述】:我在我的项目中使用 AFNetworking 框架并通过 AFHTTPSessionManager 类访问 web 服务,如下方式,
AFHTTPSessionManager *manager = [[AFHTTPSessionManager alloc] initWithBaseURL:baseURL];
manager.responseSerializer = [AFJSONResponseSerializer serializer];
[manager.requestSerializer setTimeoutInterval:30];
NSDictionary *parametersDictionary = @
@"users_id":userIDStr,
@"name" :@""
;
[manager POST:@"api/call_XAPI?"
parameters:parametersDictionary
progress:^(NSProgress * _Nonnull uploadProgress)
success:^(NSURLSessionDataTask * _Nonnull task, id _Nullable responseObject)
NSLog(@"Success");
failure:^(NSURLSessionDataTask *task, NSError *error)
NSLog(@"%@", error);
];
这在成功时可以正常工作,但是如果服务器中发生任何错误,则错误响应在控制台上没有以正确的格式显示
Printing description of error:
Error Domain=com.alamofire.error.serialization.response Code=-1011 "Request failed: internal server error (500)" UserInfo=com.alamofire.serialization.response.error.response=<NSHTTPURLResponse: 0x608000435940> URL: http://www.example.com/api/call_XYZAPI? status code: 500, headers
"Cache-Control" = "no-cache";
Connection = "keep-alive";
"Content-Type" = "application/json";
Date = "Mon, 30 Jan 2017 13:12:59 GMT";
Server = "nginx/1.10.2";
"Set-Cookie" = "laravel_session=ca9b0725b981267be1f095bb6ae14a1d5ae2825f; expires=Mon, 30-Jan-2017 15:12:59 GMT; Max-Age=7200; path=/; httponly";
"Transfer-Encoding" = Identity;
, NSErrorFailingURLKey=http://www.example.com/api/call_XYZAPI?, com.alamofire.serialization.response.error.data = 12112,23131,31231331,312231 .....
谁能告诉我我做错了什么以及如何解决这个问题?
【问题讨论】:
报错,最好先检查一下邮递员是否给出完整的响应? 看到这个***.com/questions/26231780/… 您在响应中得到了哪种响应。添加该代码的某种格式。 你好@KKRocks 我已经在上面添加了Printing description of error:
是这个格式吗:12112,23131,31231331,312231 .....
【参考方案1】:
根据this article的说法,错误500与客户端无关,应该在web服务服务器上处理。
联系您的后端开发人员并请他修复它。
【讨论】:
是的@Yogi,你是对的,我们已经解决了这个问题,但我的问题是错误响应格式不正确。 我认为你应该看看NSHTTPURLResponse
对象的内容。大多数情况下,它具有来自服务器的更好格式的响应。我假设您需要它通过显示错误警报来让用户知道错误。
当你得到internal server error (500)
时,你打印的终端日志是ok的,不用担心。
是的@nynohu先生,我也处理了所有状态码,但我只是对错误格式感到好奇。
您可以try NSHTTPURLResponse *response = (NSHTTPURLResponse *)task.response; int statuscode = response.statusCode;
获取错误码以上是关于AFNetworking 响应格式不正确的主要内容,如果未能解决你的问题,请参考以下文章
如何使用 JSON 格式解析通过 AFNetworking 1.0 获得的响应