AFNetworking Domain=com.alamofi

2021-01-27  本文已影响0人  爱在心_001

小白记录学习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);

接着学习。

上一篇下一篇

猜你喜欢

热点阅读