AFNetworking Domain=com.alamofire.error.serialization.response Code=-1011 "Request failed: not f...

小白记录学习iOS网络框架使用中遇到的问题
使用AFNetworking 4.x版本进行post请求出现了情况

Domain=com.alamofire.error.serialization.response Code=-1011 "Request failed: not found (404)"

后台说是请求参数有问题,不是json格式的,我仔细看了入参数据我是按照规范json格式传入的。
遇到了这个错误自查了以下几个问题:
1.确认post时带的参数params是不是有问题
2.确认一下请求是否写错了
3.确认requestSerializer序列化是否有问题
开始解决:
网上大部分说法是修改acceptableContentTypes 比如下面:

 sessionManager.responseSerializer.acceptableContentTypes = [NSSet setWithObjects:@"application/json",@"text/json", @"text/html",@"text/plain",nil];

但是,这么修改并没有解决这个问题,最后解决问题是需要修改请求序列化

sessionManager.requestSerializer = [AFHTTPRequestSerializer serializer];

改成

sessionManager.requestSerializer = [AFJSONRequestSerializer serializer];

这么修改就可以成功设置json参数。
总结:
  对于AFHTTPSessionManager,当其在要发送请求时,会调用AFHTTPRequestSerializer 来组装请求。 而当请求获得了响应,需要作出解析时,又会调用对应的response serializer来解析返回的data。对于服务器响应的解析过程,在AFHTTPSessionManager中,是通过AFHTTPResponseSerializer来实现的。

AFHTTPRequestSerializer:二进制格式
AFJSONRequestSerializer:JSON 继承自AFHTTPRequestSerializer
AFPropertyListRequestSerializer:Plist 继承自AFHTTPRequestSerializer

查看请求头内容需使用

- (void)setValue:(NSString *)value forHTTPHeaderField:(NSString *)field
NSLog(@"%@",sessionManager.requestSerializer.HTTPRequestHeaders);

接着学习。

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容