AFNetworking是一個輕量級的iOS網(wǎng)絡(luò)通信類庫固以。它建立在NSURLConnection和NSOperation等類庫的基礎(chǔ)上掐松,讓很多網(wǎng)絡(luò)通信功能的實現(xiàn)變得十分簡單齐鲤。
- 使用AFNetwork來檢測網(wǎng)絡(luò)狀態(tài)
-(void)reach
{
/*
AFNetworkReachabilityStatusUnknown = -1, 未知
AFNetworkReachabilityStatusNotReachable = 0, 未連接
AFNetworkReachabilityStatusReachableViaWWAN = 1, 3G 花錢
AFNetworkReachabilityStatusReachableViaWiFi = 2, WIFI
*/
//如果要檢測網(wǎng)絡(luò)狀態(tài)的變化瓦糟,必須用檢測管理器的單例
[[AFNetworkReachabilityManager sharedManager] startMonitoring];
[[AFNetworkReachabilityManager sharedManager] setReachabilityStatusChangeBlock:^(AFNetworkReachabilityStatus status) {
NSLog(@"status = %ld",status);
}];
}
- 使用AFNetwork 的 GET方法 獲取信息
-(void)getRequestWithUrl:(NSString *)urlString WithParameters:(NSDictionary *)dictionary
{
NSURL *url = [NSURL URLWithString:urlString];
AFHTTPSessionManager *manager = [AFHTTPSessionManager manager];
[manager GET:url.absoluteString parameters:dictionary progress:^(NSProgress * _Nonnull downloadProgress) {
NSLog(@"下載 = %@",downloadProgress);
} success:^(NSURLSessionDataTask * _Nonnull task, id _Nullable responseObject) {
//通知
[[NSNotificationCenter defaultCenter] postNotificationName:@"center" object:nil userInfo:responseObject];
} failure:^(NSURLSessionDataTask * _Nullable task, NSError * _Nonnull error) {
NSLog(@"錯誤 = %@",error);
}];
}
- 使用AFNetwork 的 POST 上傳純文本信息
-(void)postWeiboWithUrl:(NSString *)urlString WithParameters:(NSDictionary *)dictionary
{
AFHTTPSessionManager *manager = [AFHTTPSessionManager manager];
//返回格式
//這里得到的是 JSon 數(shù)據(jù)堵泽,默認(rèn)的 responseSeroalizer 也是 JSon 數(shù)據(jù)
manager.responseSerializer = [AFJSONResponseSerializer serializer];
//得到的是 NSData 數(shù)據(jù)
// manager.responseSerializer = [AFHTTPResponseSerializer serializer];
//接受一些類型
manager.responseSerializer.acceptableContentTypes = [NSSet setWithObjects:@"application/json", nil];
NSURL *url = [NSURL URLWithString:urlString];
[manager POST:url.absoluteString parameters:dictionary progress:^(NSProgress * _Nonnull uploadProgress) {
NSLog(@"上傳 = %@",uploadProgress);
} success:^(NSURLSessionDataTask * _Nonnull task, id _Nullable responseObject) {
NSLog(@"響應(yīng) = %@",responseObject);
} failure:^(NSURLSessionDataTask * _Nullable task, NSError * _Nonnull error) {
NSLog(@"錯誤 = %@",error);
}];
}
- 使用AFNetwork 的 POST 方法 上傳文本和圖片
-(void)postWeiboWithUrl:(NSString *)urlString WithParameters:(NSDictionary *)dictionary WithImageName:(NSString *)imageName
{
AFHTTPSessionManager *manager = [AFHTTPSessionManager manager];
manager.responseSerializer = [AFJSONResponseSerializer serializer];
manager.responseSerializer.acceptableContentTypes = [NSSet setWithObjects:@"application/json", nil];
NSURL *url = [NSURL URLWithString:urlString];
[manager POST:url.absoluteString parameters:dictionary constructingBodyWithBlock:^(id<AFMultipartFormData> _Nonnull formData) {
NSData *data = UIImagePNGRepresentation([UIImage imageNamed:@"voiceChange"]);
// NSData *data1 = UIImageJPEGRepresentation([UIImage imageNamed:@"voiceChange"], 0.5);
[formData appendPartWithFileData:data name:@"pic" fileName:@"測試.png" mimeType:@"png"];
} progress:^(NSProgress * _Nonnull uploadProgress) {
NSLog(@"上傳 = %@",uploadProgress);
} success:^(NSURLSessionDataTask * _Nonnull task, id _Nullable responseObject) {
NSLog(@"響應(yīng) = %@",responseObject);
} failure:^(NSURLSessionDataTask * _Nullable task, NSError * _Nonnull error) {
NSLog(@"錯誤 = %@",error);
}];
}