一精钮、網(wǎng)絡(luò)請(qǐng)求:
AFHTTPSessionManager *manager = [AFHTTPSessionManager manager];
[manager GET:URLString parameters:nil progress:nil success:^(NSURLSessionDataTask * _Nonnull task, id _Nullable responseObject) {
NSLog(@"responseObject : %@", responseObject);
} failure:^(NSURLSessionDataTask * _Nullable task, NSError * _Nonnull error) {
NSLog(@"error : %@", error.description);
}];
AFHTTPSessionManager *manager = [AFHTTPSessionManager manager];
[manager POST:URLString parameters:params progress:^(NSProgress * _Nonnull uploadProgress) {
} success:^(NSURLSessionDataTask * _Nonnull task, id _Nullable responseObject) {
NSLog(@"responseObject : %@", responseObject);
} failure:^(NSURLSessionDataTask * _Nullable task, NSError * _Nonnull error) {
NSLog(@"error : %@", error);
}];
二、文件上傳:
AFHTTPSessionManager *sessionManager = [AFHTTPSessionManager manager];
[sessionManager POST:URL parameters:params constructingBodyWithBlock:^(id<AFMultipartFormData> _Nonnull formData) {
NSString *filePath = [[NSBundle mainBundle] pathForResource:@"a.jpg" ofType:nil];
NSData *imgData = [NSData dataWithContentsOfFile:filePath];
[formData appendPartWithFileData:imgData name:@"pic" fileName:@"filename" mimeType:@"image/jpg"];
} progress:^(NSProgress * _Nonnull uploadProgress) {
// 獲取上傳的進(jìn)度
NSLog(@"%.2f",uploadProgress.fractionCompleted);
NSLog(@"線程:%@",[NSThread currentThread]); // 子線程
} success:^(NSURLSessionDataTask * _Nonnull task, id _Nullable responseObject) {
// 請(qǐng)求成功
NSLog(@"請(qǐng)求成功:%@",responseObject);
NSLog(@"線程:%@",[NSThread currentThread]); // 主線程
} failure:^(NSURLSessionDataTask * _Nullable task, NSError * _Nonnull error) {
// 請(qǐng)求失敗
NSLog(@"請(qǐng)求失斉置搿:%@",error);
}];
AFHTTPSessionManager *sessionManager = [AFHTTPSessionManager manager];
[sessionManager POST:@" " parameters:@{@" " : @" "} constructingBodyWithBlock:^(id<AFMultipartFormData> formData) {
// 在block中設(shè)置需要上傳的文件
[formData appendPartWithFileURL:[NSURL fileURLWithPath:@"文件路徑"] name:@"file" error:nil];
} success:^(NSURLSessionDataTask *task, id responseObject) {
NSLog(@"成功:%@", responseObject);
} failure:^(NSURLSessionDataTask *task, NSError *error) {
NSLog(@"失敗:%@", error);
}];
三、文件下載
- 使用 NSURLSessionDownloadTask 類
AFHTTPSessionManager *manager = [AFHTTPSessionManager manager];
NSURL *url = [NSURL URLWithString:@" "];
NSURLRequest *request = [NSURLRequest requestWithURL:url];
// 下載文件
NSURLSessionDownloadTask *task = [manager downloadTaskWithRequest:request progress:^(NSProgress * _Nonnull downloadProgress) {
// block會(huì)實(shí)時(shí)調(diào)用
NSLog(@"%.2f",downloadProgress.fractionCompleted);
} destination:^NSURL * _Nonnull(NSURL * _Nonnull targetPath, NSURLResponse * _Nonnull response) {
// NSHomeDirectory()可以得到應(yīng)用程序目錄的路徑
// 返回一個(gè)URL存儲(chǔ)文件
NSString *filePath = [NSHomeDirectory() stringByAppendingPathComponent:@"Documents/***.mp3"];
NSURL *url = [NSURL fileURLWithPath:filePath];
return url;
} completionHandler:^(NSURLResponse * _Nonnull response, NSURL * _Nullable filePath, NSError * _Nullable error) {
if (error) {
NSLog(@"下載失敗 ~~~ %@",error);
}else {
NSLog(@"下載成功");
}
}];
// 開始下載任務(wù)
[task resume];
四箩张、網(wǎng)絡(luò)監(jiān)聽
- 使用 AFNetworkReachabilityManager 類
// 獲得網(wǎng)絡(luò)監(jiān)控的管理者
AFNetworkReachabilityManager *manager = [AFNetworkReachabilityManager manager];
// 只要網(wǎng)絡(luò)環(huán)境發(fā)生變化改鲫,就會(huì)調(diào)用此 block
[manager setReachabilityStatusChangeBlock:^(AFNetworkReachabilityStatus status) {
/* 枚舉里面的四個(gè)狀態(tài)
AFNetworkReachabilityStatusUnknown = -1, 未知
AFNetworkReachabilityStatusNotReachable = 0, 不可用
AFNetworkReachabilityStatusReachableViaWWAN = 1, 手機(jī)自帶網(wǎng)絡(luò)
AFNetworkReachabilityStatusReachableViaWiFi = 2, wifi
*/
switch (status) {
case AFNetworkReachabilityStatusUnknown:
NSLog(@"未知");
break;
case AFNetworkReachabilityStatusNotReachable:
NSLog(@"不可用");
break;
case AFNetworkReachabilityStatusReachableViaWWAN:
NSLog(@"手機(jī)自帶網(wǎng)絡(luò)");
break;
case AFNetworkReachabilityStatusReachableViaWiFi:
NSLog(@"Wifi");
break;
default:
break;
}
}];
// 開始監(jiān)聽
[manager startMonitoring];