AFNetworking是在iOS开发中使用非常多的网络开源库
适用于iOS以及Mac OS X 它构建与NSURLConnection NSOperation以及其他熟悉的Foundation技术之上
AFNetworking是一个轻量级的网络请求API类库
目前AFNetworking使用NSURLSession作为网络类!!!!
AFNetworking可以进行网络监测:
//开始监测
[AFNetworkingReachabilityManager sharedManager] stratMonitoring];
//打印数据
[AFNetworkingReachabilityManager sharedManager] setReachabliltyStatusChangeBlock:^(AFNetworkReachablilty Status status){
NSLog(@"%ld", status); }];
AFNetworking网络数据请求
注意:AFNetworking默认接受json格式的响应 如果要接受其他格式的数据响应需要设置acceptableContentTypes
//设置请求接口回来的时候支持什么类型的数据
[AFHTTPSessionManager manager].responseSerializer.acceptableContentTypes = [NSSet setWithObjects:@"application/json", @"text/json", @"text/javascript",@"application/x-json",@"text/html", nil];
get请求:
使用它来发出 HTTP 请求有两个步骤
1 以服务器的 主机地址或者域名 生成一个 AFHTTPSessionManager 的实例
2 调用 - GET:parameters:progress:success:failure: 方法
AFHTTPSessionManager *manager = [[AFHTTPSessionManager alloc] initWithBaseURL:[[NSURL alloc] initWithString:@"hostname"]];
[manager GET:@"relative_url" parameters:nil progress:nil
success:^(NSURLSessionDataTask * _Nonnull task, id _Nullable responseObject) {
NSLog(@"%@" ,responseObject);
} failure:^(NSURLSessionDataTask * _Nullable task, NSError * _Nonnull error) {
NSLog(@"%@", error);
}];
post请求
// 请求管理者
2 AFHTTPSessionManager *manager = [AFHTTPSessionManager manager];
3 manager.responseSerializer = [AFHTTPResponseSerializer serializer];//这句代码的意思是: 默认传输的数据类型(参照上面的“注意”)
4
5
6 // 拼接请求参数
7 NSMutableDictionary *dict = [NSMutableDictionary dictionary];
[dict setValue:@"" forKey:@"address"];
[dict setValue:@"add_comment" forKey:@"do"];
[dict setValue:@"task" forKey:@"kind"];
[dict setValue:@"zpHr2dsRvQQxYJxo2" forKey:@"member_id"];
[dict setValue:@"" forKey:@"other"];
[dict setValue:@"55a47e79ec25e3641" forKey:@"task_id"];
13 //上面这些是body部分 用可变的字典来拼接
14
15
16
17 [manager POST:@"https://api.weibo.com/oauth2/access_token" parameters:dict progress:^(NSProgress * _Nonnull uploadProgress) {
18
19 } success:^(NSURLSessionDataTask * _Nonnull task, id _Nullable responseObject) {
20 NSLog(@"请求成功:%@", responseObject);
21 // 解析数据
22 NSDictionary *JSON = [NSJSONSerialization JSONObjectWithData:responseObject options:NSJSONReadingMutableContainers error:nil];
23
24 NSLog(@"请求成功JSON:%@", JSON);
25
26
27 } failure:^(NSURLSessionDataTask * _Nullable task, NSError * _Nonnull error) {
28
29 NSLog(@"请求失败:%@", error.description);
30
31 }];