为什么要用AFNetworking?
- 带block形式, 内部是任务队列进行下载 。
- 还可以检测网络状态。
- GET请求
- (void)getAFNetworking {
AFHTTPSessionManager *manager = [AFHTTPSessionManager manager];
NSString *url = @"http://apis.juhe.cn/ip/ip2addr?ip=www.juhe.cn";
[manager GET:url parameters:nil progress:^(NSProgress * _Nonnull downloadProgress) {
}
success:^(NSURLSessionDataTask * _Nonnull task, id _Nullable responseObject) {
NSLog(@"请求成功:%@",responseObject);
}
failure:^(NSURLSessionDataTask * _Nullable task, NSError * _Nonnull error) {
NSLog(@"请求失败:%@",error);
}];
}
- POST请求
- (void)postAFNetworking {
AFHTTPSessionManager *manager = [AFHTTPSessionManager manager];
manager.requestSerializer = [AFJSONRequestSerializer serializer]; // 请求JSON格式
manager.responseSerializer = [AFJSONResponseSerializer serializer]; // 响应JSON格式
[manager.requestSerializer setValue:@"application/json;UTF-8" forHTTPHeaderField:@"Content-Type"];
NSString *url = @"http://xxx/app/user/login";
NSDictionary *parameters = @{@"mobile":@"18672788083",
@"password": @"password",
@"DToken": @"537e8678186"};
[manager POST:url parameters:parameters progress:^(NSProgress * _Nonnull uploadProgress) {
} success:^(NSURLSessionDataTask * _Nonnull task, id _Nullable responseObject) {
NSLog(@"请求成功:%@",responseObject);
} failure:^(NSURLSessionDataTask * _Nullable task, NSError * _Nonnull error) {
NSLog(@"请求失败:%@",error);
}];
}
- 检测当前网络状态
- (void)AFNetworkStatus{ //1.创建网络监测者 AFNetworkReachabilityManager *manager = [AFNetworkReachabilityManager sharedManager]; /*枚举里面四个状态 分别对应 未知 无网络 数据 WiFi typedef NS_ENUM(NSInteger, AFNetworkReachabilityStatus) { AFNetworkReachabilityStatusUnknown = -1, 未知 AFNetworkReachabilityStatusNotReachable = 0, 无网络 AFNetworkReachabilityStatusReachableViaWWAN = 1, 蜂窝数据网络 AFNetworkReachabilityStatusReachableViaWiFi = 2, WiFi }; */ [manager setReachabilityStatusChangeBlock:^(AFNetworkReachabilityStatus status) { switch (status) { case AFNetworkReachabilityStatusUnknown: NSLog(@"未知网络状态"); break; case AFNetworkReachabilityStatusNotReachable: NSLog(@"无网络"); break; case AFNetworkReachabilityStatusReachableViaWWAN: NSLog(@"蜂窝数据网"); break; case AFNetworkReachabilityStatusReachableViaWiFi: NSLog(@"WiFi网络"); break; default: break; } }] ; }