开源库:AFNetworking

文丨清枫

AFNetworking开源库封装了原生的方法,由于NSURLConnection的弃用,AFNetworking的使用也有一些改变。

Get请求

AFHTTPSessionManager *manager = [AFHTTPSessionManager manager];

[manager GET:URL parameters:nil progress:^(NSProgress * _Nonnull downloadProgress) {  

}     
 success:^(NSURLSessionDataTask * _Nonnull task, id  _Nullable responseObject) {  

 NSLog(@"这里打印请求成功要做的事");  

}

failure:^(NSURLSessionDataTask * _Nullable task, NSError * _Nonnull   error) {  

NSLog(@"%@",error);  //这里打印错误信息

}];

Post请求

AFHTTPSessionManager *manager = [AFHTTPSessionManager manager];


NSMutableDictionary *parameters = @{@"":@"",@"":@""};

[manager POST:URL parameters:parameters progress:^(NSProgress * _Nonnull uploadProgress) {


} success:^(NSURLSessionDataTask * _Nonnull task, id  _Nullable responseObject) {


} failure:^(NSURLSessionDataTask * _Nullable task, NSError * _Nonnull error) {

}];

Download请求

//创建NSURLSessionConfiguration
NSURLSessionConfiguration *configuration = [NSURLSessionConfiguration defaultSessionConfiguration];
//创建管理者对象
AFURLSessionManager *manager = [[AFURLSessionManager alloc] initWithSessionConfiguration:configuration];

//设置url
NSURL *URL = [NSURL URLWithString:@"http://example.com/download.zip"];
//创建请求对象
NSURLRequest *request = [NSURLRequest requestWithURL:URL];

//下载任务
NSURLSessionDownloadTask *downloadTask = [manager downloadTaskWithRequest:request progress:^(NSProgress * _Nonnull downloadProgress) {
        //打印下下载进度
        NSLog(@"%lf",1.0 * downloadProgress.completedUnitCount / downloadProgress.totalUnitCount);

    } destination:^NSURL *(NSURL *targetPath, NSURLResponse *response) {
    //设置下载路径
    NSURL *documentsDirectoryURL = [[NSFileManager defaultManager] URLForDirectory:NSDocumentDirectory inDomain:NSUserDomainMask appropriateForURL:nil create:NO error:nil];
    return [documentsDirectoryURL URLByAppendingPathComponent:[response suggestedFilename]];
} completionHandler:^(NSURLResponse *response, NSURL *filePath, NSError *error) {
  //下载完成
    NSLog(@"File downloaded to: %@", filePath);
}];
//启动任务
[downloadTask resume];

Upload请求

//创建NSURLSessionConfiguration
NSURLSessionConfiguration *configuration = [NSURLSessionConfiguration defaultSessionConfiguration];
//创建管理者对象
AFURLSessionManager *manager = [[AFURLSessionManager alloc] initWithSessionConfiguration:configuration];

//设置url
NSURL *URL = [NSURL URLWithString:@"http://example.com/upload"];
//创建请求对象
NSURLRequest *request = [NSURLRequest requestWithURL:URL];
//文件路径
NSURL *filePath = [NSURL fileURLWithPath:@"file://path/to/image.png"];

//上传任务
NSURLSessionUploadTask *uploadTask = [manager uploadTaskWithRequest:request fromFile:filePath progress:nil completionHandler:^(NSURLResponse *response, id responseObject, NSError *error) {
    if (error) {
      //错误
        NSLog(@"Error: %@", error);
    } else {
      //成功
        NSLog(@"Success: %@ %@", response, responseObject);
    }
}];
//启动任务
[uploadTask resume];

网络状态

//1.创建网络监测者
   AFNetworkReachabilityManager *manager = [AFNetworkReachabilityManager sharedManager];


   [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;
       }

   }] ;
}

你可能感兴趣的:(开源库:AFNetworking)