开源库:AFNetworking

作者: 郭清枫 | 来源:发表于2017-03-08 23:20 被阅读81次

文丨清枫

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

    文丨清枫 AFNetworking开源库封装了原生的方法,由于NSURLConnection的弃用,AFNetwo...

  • iOS 静态库 和 bundle

    开源库公开源代码,能看到具体实现,如SDWebImage,AFNetworking 闭源库不公开源代码,是经过编译...

  • 库的基本概念及静态库与动态库的区别

    库: 程序代码的集合,是共享程序代码的一种方式 (库分为开源库和闭源库) 开源库: 例如AFNetworking,...

  • iOS开发 - 常用的第三方库/第三方框架整理

    常用第三方库(开源) SDWebImage MJRefresh MJExtension AFNetworking ...

  • 第三方

    1. AFNetworking 在众多iOS开源项目中,AFNetworking可以称得上是最受开发者欢迎的库项目...

  • 37个常用第三方

    AFNetworking在众多iOS开源项目中,AFNetworking可以称得上是最受开发者欢迎的库项目。AFN...

  • iOS开发库总结

    总结这些优质开源库供快捷开发。框架类网络 AFNetworking 轻量级网络库。 网络 图像 SDWebImag...

  • iOS开发常用库

    总结这些优质开源库供快捷开发。 框架类 网络AFNetworking轻量级网络库。 网络图像SDWebImage支...

  • AFNetworking3详解

    AFNetworking是iOS开发中最常用的第三方开源库之一,它主要用于进行网络请求。AFNetworking主...

  • AFNetworking源码学习

    简介 AFNetWorking是使用Objective-c开发iOS程序主流的网络请求开源库。 AFNetwork...

网友评论

    本文标题:开源库:AFNetworking

    本文链接:https://www.haomeiwen.com/subject/agbigttx.html