前言
导入的最新版的AFNetworking3.1.0,突然发现找不到AFHTTPRequestOperationManager了。
刚开始以为是cocoapods没有给我导进去,后来发现也没有这NSURLConnection了,被弃用了,突然意识到,这个就是AFHTTPRequestOperationManager找不到的原因了,它是基于NSURLConnection封装的!!
于是找了一下,现在都用的是NSURLSession了,AFNetworking中用的是AFHTTPSessionManager了
测试版本AFNetworking3.1.0
GET/POST请求
1  | AFHTTPSessionManager *manager = [AFHTTPSessionManager manager];  | 
添加认证头
1  | [manager.requestSerializer setValue:[NSString stringWithFormat:@"%@ %@", @"Bearer", @"xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx"] forHTTPHeaderField:@"Authorization"];  | 
指定Request的序列化方式
1  | NSMutableDictionary *parametersDic = [NSMutableDictionary dictionary];  | 
Request序列化的方式有三种 (上面示例的就是方式1)
- GET一种 也就是默认的方式
 - POST两种 默认的方式 和JSON方式
 
假如要请求的URL 和参数如下
1  | NSString *URLString = @"http://example.com";  | 
1) 方式1 GET请求默认的方式
1  | HTTPRequestSerializer serializer] requestWithMethod:@"GET" URLString:URLString parameters:parameters error:nil];  | 
实际请求的样子
1  | GET http://example.com?foo=bar&baz[]=1&baz[]=2&baz[]=3  | 
2) 方式2 POST请求默认的方式
1  | [[AFHTTPRequestSerializer serializer] requestWithMethod:@"POST" URLString:URLString parameters:parameters error:nil];  | 
实际请求的样子
1  | POST http://example.com/  | 
3) 方式3 POST请求JSON形式的方式
1  | [[AFJSONRequestSerializer serializer] requestWithMethod:@"POST" URLString:URLString parameters:parameters error:nil];  | 
实际请求的样子
1  | POST http://example.com/  | 
指定Response的序列化方式
1  | AFHTTPSessionManager *manager = [AFHTTPSessionManager manager];  | 
如果不指定
默认如果返回的格式是json类型 返回的responseObject就是NSDictionary类型 可以类似这样取值responseObject[@"msg"]
如果不是json格式 就为nil
如果返回格式不固定 或者自己处理 就添加上面的序列化方式
建议
如果结果确定为JSON 就不添加上面的代码
不确定 自己处理就需要添加
自己序列化的代码
1  | NSDictionary *resultDic = [NSJSONSerialization JSONObjectWithData:responseObject options:NSJSONReadingMutableLeaves error:nil];  | 
所以还是建议添加序列化方式 自己处理
设置cookie
思路
- 请求之前设置cookie
 - 请求回调之后保存cookie
 
代码如下
1  | //保存cookie  | 
文件下载
1  | /**  | 
文件上传
1  | //1.创建管理者对象  | 
- 获取Task 普通上传
 
1  | NSURLSessionConfiguration *configuration = [NSURLSessionConfiguration defaultSessionConfiguration];  | 
- 获取Task 
Multi-PartRequest 
1  | NSMutableURLRequest *request = [[AFHTTPRequestSerializer serializer] multipartFormRequestWithMethod:@"POST" URLString:@"http://www.psvmc.cn/upload" parameters:nil constructingBodyWithBlock:^(id<AFMultipartFormData> formData) {  | 
监测当前网络状态(网络监听)
1  | - (void)AFNetworkStatus{  |