AFNetworking是一个用于iOS、macOS、watchOS和tvOS的功能强大的网络库。它构建在基础URL加载系统之上,扩展了强大的高级网络抽象,并将其构建为Cocoa。它有一个模块化的架构,设计良好,具有强大功能的api

使用 CocoaPods 引入

  1. pod 'AFNetworking', '~> 3.0'
  • 创建一个下载任务
  1. NSURLSessionConfiguration *configuration = [NSURLSessionConfiguration defaultSessionConfiguration];
  2. AFURLSessionManager *manager = [[AFURLSessionManager alloc] initWithSessionConfiguration:configuration];
  3.  
  4. NSURL *URL = [NSURL URLWithString:@"http://example.com/download.zip"];
  5. NSURLRequest *request = [NSURLRequest requestWithURL:URL];
  6.  
  7. NSURLSessionDownloadTask *downloadTask = [manager downloadTaskWithRequest:request progress:nil destination:^NSURL *(NSURL *targetPath, NSURLResponse *response) {
  8. NSURL *documentsDirectoryURL = [[NSFileManager defaultManager] URLForDirectory:NSDocumentDirectory inDomain:NSUserDomainMask appropriateForURL:nil create:NO error:nil];
  9. return [documentsDirectoryURL URLByAppendingPathComponent:[response suggestedFilename]];
  10. } completionHandler:^(NSURLResponse *response, NSURL *filePath, NSError *error) {
  11. NSLog(@"File downloaded to: %@", filePath);
  12. }];
  13. [downloadTask resume];
  • 创建一个上传任务
  1. NSURLSessionConfiguration *configuration = [NSURLSessionConfiguration defaultSessionConfiguration];
  2. AFURLSessionManager *manager = [[AFURLSessionManager alloc] initWithSessionConfiguration:configuration];
  3.  
  4. NSURL *URL = [NSURL URLWithString:@"http://example.com/upload"];
  5. NSURLRequest *request = [NSURLRequest requestWithURL:URL];
  6.  
  7. NSURL *filePath = [NSURL fileURLWithPath:@"file://path/to/image.png"];
  8. NSURLSessionUploadTask *uploadTask = [manager uploadTaskWithRequest:request fromFile:filePath progress:nil completionHandler:^(NSURLResponse *response, id responseObject, NSError *error) {
  9. if (error) {
  10. NSLog(@"Error: %@", error);
  11. } else {
  12. NSLog(@"Success: %@ %@", response, responseObject);
  13. }
  14. }];
  15. [uploadTask resume];
  • 创建一个上传任务并获取当前上传进度
  1. NSMutableURLRequest *request = [[AFHTTPRequestSerializer serializer] multipartFormRequestWithMethod:@"POST" URLString:@"http://example.com/upload" parameters:nil constructingBodyWithBlock:^(id<AFMultipartFormData> formData) {
  2. [formData appendPartWithFileURL:[NSURL fileURLWithPath:@"file://path/to/image.jpg"] name:@"file" fileName:@"filename.jpg" mimeType:@"image/jpeg" error:nil];
  3. } error:nil];
  4.  
  5. AFURLSessionManager *manager = [[AFURLSessionManager alloc] initWithSessionConfiguration:[NSURLSessionConfiguration defaultSessionConfiguration]];
  6.  
  7. NSURLSessionUploadTask *uploadTask;
  8. uploadTask = [manager
  9. uploadTaskWithStreamedRequest:request
  10. progress:^(NSProgress * _Nonnull uploadProgress) {
  11. // This is not called back on the main queue.
  12. // You are responsible for dispatching to the main queue for UI updates
  13. dispatch_async(dispatch_get_main_queue(), ^{
  14. //Update the progress view
  15. [progressView setProgress:uploadProgress.fractionCompleted];
  16. });
  17. }
  18. completionHandler:^(NSURLResponse * _Nonnull response, id _Nullable responseObject, NSError * _Nullable error) {
  19. if (error) {
  20. NSLog(@"Error: %@", error);
  21. } else {
  22. NSLog(@"%@ %@", response, responseObject);
  23. }
  24. }];
  25.  
  26. [uploadTask resume];
  • 创建一个数据任务
  1. NSURLSessionConfiguration *configuration = [NSURLSessionConfiguration defaultSessionConfiguration];
  2. AFURLSessionManager *manager = [[AFURLSessionManager alloc] initWithSessionConfiguration:configuration];
  3.  
  4. NSURL *URL = [NSURL URLWithString:@"http://httpbin.org/get"];
  5. NSURLRequest *request = [NSURLRequest requestWithURL:URL];
  6.  
  7. NSURLSessionDataTask *dataTask = [manager dataTaskWithRequest:request completionHandler:^(NSURLResponse *response, id responseObject, NSError *error) {
  8. if (error) {
  9. NSLog(@"Error: %@", error);
  10. } else {
  11. NSLog(@"%@ %@", response, responseObject);
  12. }
  13. }];
  14. [dataTask resume];
  • 正常数据请求
  1. NSString *URLString = @"http://example.com";
  2. NSDictionary *parameters = @{@"foo": @"bar", @"baz": @[@, @, @]};
  3.  
  4. [[AFHTTPRequestSerializer serializer] requestWithMethod:@"GET" URLString:URLString parameters:parameters error:nil];
  5. /** GET http://example.com?foo=bar&baz[]=1&baz[]=2&baz[]=3 */
  6.  
  7. [[AFHTTPRequestSerializer serializer] requestWithMethod:@"POST" URLString:URLString parameters:parameters error:nil];
  8. /**
  9. POST http://example.com/
  10. Content-Type: application/x-www-form-urlencoded
  11. foo=bar&baz[]=1&baz[]=2&baz[]=3
  12. */
  • 监测网络状态
  1. [[AFNetworkReachabilityManager sharedManager] setReachabilityStatusChangeBlock:^(AFNetworkReachabilityStatus status) {
  2. NSLog(@"Reachability: %@", AFStringFromNetworkReachabilityStatus(status));
  3. }];
  4.  
  5. [[AFNetworkReachabilityManager sharedManager] startMonitoring];
  • SSL证书无效
  1. AFHTTPSessionManager *manager = [AFHTTPSessionManager manager];
  2. manager.securityPolicy.allowInvalidCertificates = YES; // not recommended for production

AFNetworking 一般用法的更多相关文章

  1. AFNetworking简单用法

    GET请求 AFHTTPSessionManager *manager = [AFHTTPSessionManager manager]; [manager GET:URL parameters:ni ...

  2. AFNetWorking

    目录: 1.为什么要用AFNetworking 2.AFNetworking的用法 一.为什么要用AFNetworking 在ios开发中,一般情况下,简单的向某个web站点简单的页面提交请求并获取服 ...

  3. AJ学IOS 之微博项目实战(8)用AFNetworking和SDWebImage简单加载微博数据

    AJ分享,必须精品 一:效果 没有图文混排,也没有复杂的UI,仅仅是简单的显示出微博数据,主要介绍AFNetworking和SDWebImage的简单用法 二:加载数据AFNetworking AFN ...

  4. AFNetworking 使用总结 (用法+JSON解析)

    « AFNetworking 图片的本地缓存问题 Get application bundle seed ID in iOS » AFNetworking 使用总结 (用法+JSON解析)    Fr ...

  5. AFNetworking 用法详解

    之前一直使用ASIHttpRequest 做网络请求 ,后来新公司用AFNetWorking ,经过一段时间学习总结一下二者的优缺点: 1.AFNetWorking的优缺点 优点: 1.维护和使用者比 ...

  6. AFNetworking 使用总结 (用法+JSON解析

    AFNetwork是一个轻量级的网络请求api类库.是以NSURLConnection, NSOperation和其他方法为基础的. 下面这个例子是用来处理json请求的: NSURL *url =  ...

  7. AFNetworking 3.0 源码解读 总结(干货)(下)

    承接上一篇AFNetworking 3.0 源码解读 总结(干货)(上) 21.网络服务类型NSURLRequestNetworkServiceType 示例代码: typedef NS_ENUM(N ...

  8. AFNetworking 3.0 源码解读(九)之 AFNetworkActivityIndicatorManager

    让我们的APP像艺术品一样优雅,开发工程师更像是一名匠人,不仅需要精湛的技艺,而且要有一颗匠心. 前言 AFNetworkActivityIndicatorManager 是对状态栏中网络激活那个小控 ...

  9. AFNetworking 3.0 源码解读(三)之 AFURLRequestSerialization

    这篇就讲到了跟请求相关的类了 关于AFNetworking 3.0 源码解读 的文章篇幅都会很长,因为不仅仅要把代码进行详细的的解释,还会大概讲解和代码相关的知识点. 上半篇: URI编码的知识 关于 ...

随机推荐

  1. Batch Normalization层

    Batch Normalization的加速作用体现在两个方面:一是归一化了每层和每维度的scale,所以可以整体使用一个较高的学习率,而不必像以前那样迁就小scale的维度:二是归一化后使得更多的权 ...

  2. bzoj 3527 [Zjoi2014] 力 —— FFT

    题目:https://www.lydsy.com/JudgeOnline/problem.php?id=3527 看了看TJ才推出来式子,还是不够熟练啊: TJ:https://blog.csdn.n ...

  3. 洛谷P4014分配问题——网络流24题

    题目:https://www.luogu.org/problemnew/show/P4014 最大/小费用最大流裸题. 代码如下: #include<iostream> #include& ...

  4. 配置tomcat https的步骤

    keytool -genkey -v -alias tomcat -keyalg RSA -keystore D:\tomcat.keystore -validity 36500 keytool -g ...

  5. oracle获取一段时间内所有的小时、天、月

    获取一段时间内所有的小时 ) sdate FROM dual CONNECT ; 获取一段时间内所有的天 sdate FROM dual CONNECT ; from user_objects whe ...

  6. 微信小程序开发之三元运算符代替wx.if/wx.else

    直接上代码 实现功能为:当fbphotoFirst为空时,src路径为“pic/信息反馈1-1_14.png“,并且点击事件uploadfbphotoFirst有效,否则为路径fbphotoFirst ...

  7. 《剑指offer面试题4》替换空格——实现函数把字符串中每个空格替换成“%20”

    思路: 例如把we are happy这个字符串中所有空格替换成"%20",最直接的做法是从头开始扫苗,遇到空格就替换,并且把空格后面的字符都顺序后移.复杂度O(n^2). 重要思 ...

  8. angular6 render2 & viewContentRef实践

    angular 渲染层 angular一个跨平台的框架不仅仅针对的浏览器这一个平台 ElementRef 与 TemplateRef 简单的理解: ElemnetRef : 例如一个<span& ...

  9. Go语言之父谈Go:大道至简

    http://www.csdn.net/article/2012-07-05/2807113-less-is-exponentially-more 摘要:导读:这篇文章是Google首席工程师.Go语 ...

  10. 2014-6-28 NOIP模拟赛

    [今天我出的三道题目全部是图论哦,请大家轻虐] 1.魔术球问题弱化版(ball.c/.cpp/.pas) 题目描述 假设有 n 根柱子,现要按下述规则在这 n 根柱子中依次放入编号为 1,2,3,…的 ...