美文网首页
AFNetworking Domain=com.alamofi

AFNetworking Domain=com.alamofi

作者: 爱在心_001 | 来源:发表于2021-01-27 08:46 被阅读0次

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

    接着学习。

    相关文章

      网友评论

          本文标题:AFNetworking Domain=com.alamofi

          本文链接:https://www.haomeiwen.com/subject/xyvszktx.html