今天在做一个接口的时候遇到一个坑
我用封装好的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的错误
然后我就封装成一个字典,大概是这样的:
然后发现 ,后台解析不到数据
解决办法:
1.声明请求的参数格式是json【AFN 默认的格式是二进制】
AFHTTPSessionManager *manager = [AFHTTPSessionManager manager];
manager.requestSerializer = [AFJSONRequestSerializer serializer];
2.POST 数据格式:
字典
不需要转换成json字符串
参考
AFN Post请求,报错400(code:-1011)
AFNetworking之AFJSONRequestSerializer使用
AFNetwork 作用和用法详解