今天跟小琪吐槽,加请求头好坑的问题。小琪说,觉得坑是因为不懂,懂了就不会觉得坑了。我觉得小琪总结得挺好的。但是毕竟菜,所以总是被一些甚至比较粗浅的问题难住。好在,现在多跳一个坑,以后就少跳一个坑。
所以,尽量先把遇到的坑记录一下,以后也便于查看。
1. 关于最新版AFNetworking(貌似是3.1.0版)添加请求头。
今天碰到的是post请求,接口那边需要raw格式。其实我也没搞明白raw是什么鬼,但是最后的结论是要添加application/json的请求头。
具体操作:
AFHTTPSessionManager *manager = [AFHTTPSessionManager manager];
[manager setResponseSerializer:[AFJSONResponseSerializer serializer]];
[manager setRequestSerializer:[AFJSONRequestSerializer serializer]];
[manager.requestSerializer setValue:@"application/json;charset=utf-8" forHTTPHeaderField:@"Content-Type"];
后面就是正常的manager的post请求就可以了。
[manager POST:@"地址连接" parameters:@"参数" progress:^(NSProgress * _Nonnull uploadProgress) {
} success:^(NSURLSessionDataTask * _Nonnull task, id _Nullable responseObject) {
NSLog(@"请求成功!");
} failure:^(NSURLSessionDataTask * _Nullable task, NSError * _Nonnull error) {
NSLog(@"请求失败!");
}];
这里遇到一个坑
manager.requestSerialize = [AFJSONRequestSerializer serializer];
用点语法赋值的时候崩溃在AFN的类里了。
不知道是不是当时还有哪里写错了,有空会再测一下。
2.字典转json (有些请求的参数要求是json类型)
dic:为参数字典
NSData *data1 = [NSJSONSerialization dataWithJSONObject:dic options:NSJSONWritingPrettyPrinted error:nil];
NSString * json = [[NSString alloc]initWithData:data1 encoding:NSUTF8StringEncoding];