iOS AFN 400\415 和传参的坑

2018-05-03  本文已影响525人  illaclv

今天在做一个接口的时候遇到一个坑

我用封装好的afn 调用


    //1.构造操作对象管理者
    AFHTTPSessionManager *manager = [AFHTTPSessionManager manager];
    //2.设置解析格式,默认json
    manager.responseSerializer = [AFJSONResponseSerializer serializerWithReadingOptions:NSJSONReadingMutableContainers];

[manager POST:requestURL
               parameters:parmas
                 progress:^(NSProgress * _Nonnull uploadProgress) {
                     
                 } success:^(NSURLSessionDataTask * _Nonnull task, id  _Nullable responseObject) {
                     if (success != nil)
                     {
                         success(responseObject);
                     }
                 } failure:^(NSURLSessionDataTask * _Nullable task, NSError * _Nonnull error) {
                     if (fail != nil) {
                         fail(error);
                         //服务器出错
                         [GetData showAlertViewWithMessage];
                         [SVProgressHUD dismiss];

                         NSLog (@"%@",error);
                     }
                 }];
            

报400

然后和后台沟通了下,他说要传的参数是json字符串。
然后我把入参的字典改成了json的string (nsstring)
但是直接把string 丢到参数里面会报415的错误

然后我就封装成一个字典,大概是这样的:


image.png

然后发现 ,后台解析不到数据

解决办法:
1.声明请求的参数格式是json【AFN 默认的格式是二进制】

 AFHTTPSessionManager *manager = [AFHTTPSessionManager manager];
    manager.requestSerializer =  [AFJSONRequestSerializer serializer];

2.POST 数据格式:
字典
不需要转换成json字符串

参考
AFN Post请求,报错400(code:-1011)
AFNetworking之AFJSONRequestSerializer使用
AFNetwork 作用和用法详解

上一篇 下一篇

猜你喜欢

热点阅读