AFNetworking 3.0

3.0之前

AFNetworking基于NSURLConnection和NSURLSession。
AFHTTPSessionManager包装的NSURLSession
AFHTTPRequestOperationManager包装的NSURLConnection

3.0之后

AFNetworking只基于NSURLSession。苹果将NSURLConnection淘汰了。


文件上传:

1、直接使用POST方式上传,通过在block里面设置需要上传的 文件。原理:就是在内部将请求体拼接起来。
2、上传多个文件:直接在block中设置多个上传文件的路径。
3、文件上传一般使用POST方式而不是使用AFHTTPSessionManager 的uploadTaskWithRequest:方法。但是还是需要我们自己拼接请求体(fromData:NSData*)这个参数。


设置解析服务器返回的数据

1、默认是JSON

    AFHTTPSessionManager *mgr = [AFHTTPsessionManager manager];
    mgr.responseSerializer默认是JSON.

2、设置AFN以XML形式解析服务器返回的数据

    AFHTTPSessionManager *mgr = [AFHTTPsessionManager manager];
    mgr.responseSerializer = [AFXMLParserResponseSerializer serializer]

3、设置AFN直接使用服务器的数据类,不解析。

    AFHTTPSessionManager *mgr = [AFHTTPsessionManager manager];
    mgr.responseSerializer = [AFHTTPResponseSerializer serializer]

创建AFHTTPSessionManager
    AFHTTPSessionManager*mgr= [AFHTTPSessionManagermanager];

GET请求
    -(NSURLSessionDataTask*)GET:(NSString*)URLString
               parameters:(id)parameters
               success:(void(^)(NSURLSessionDataTask*task,idresponseObject))success
               failure:(void(^)(NSURLSessionDataTask*task,NSError*error))failure
POST请求
    -(NSURLSessionDataTask*)POST:(NSString*)URLString
               parameters:(id)parameters
               success:(void(^)(NSURLSessionDataTask*task,idresponseObject))success
               failure:(void(^)(NSURLSessionDataTask*task,NSError*error))failure

文件上传
    -(NSURLSessionDataTask*)POST:(NSString*)URLString
                parameters:(id)parameters
 constructingBodyWithBlock:(void(^)(id<AFMultipartFormData>formData))block
                success:(void(^)(NSURLSessionDataTask*task,idresponseObject))success
                failure:(void(^)(NSURLSessionDataTask*task,NSError*error))failure

https

通过代理NSURLSessionTaskDelegate来处理证书。
但是通过AFN内部已经处理好了。


监控网络状态
AFN监控网络状态
    AFNetworkReachabilityManager*manager = [AFNetworkReachabilityManagersharedManager];
    [managerstartMonitoring];

    [managersetReachabilityStatusChangeBlock:^(AFNetworkReachabilityStatusstatus) {
        //代码
    } ];

注意:要监控网络连接状态,必须要先调用单例的startMonitoring方法

苹果自带:Reachbility监控网络状态
判断现在的网络状态
     if ([Reachability reachabilityForLocalWiFi].currentReachabilityStatus != NotReachable) {
    NSLog(@"是wifi");
} else if ([Reachability reachabilityForInternetConnection].currentReachabilityStatus != NotReachable) {
    NSLog(@"是手机自带网络");
} else {
    NSLog(@"网络有问题");
}
监听目前的网络状态:

原理:通过监听通知,发现现在的网络发生改变,就获取到现在的网络状态。
注意:监听通知需要移除通知。也可用单例,在appdalegate中一开始就监听。

    /** 监控网络 */
    @property (nonatomic, strong) Reachability *reachability;

    // 监听通知

   [[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(getNetworkStatus) name:kReachabilityChangedNotification object:nil];

   // 开始监控网络
    self.reachability = [Reachability reachabilityForInternetConnection];
    [self.reachability startNotifier];

    // 移除通知
    - (void)dealloc
    {
      [[NSNotificationCenter defaultCenter] removeObserver:self];
      [self.reachability stopNotifier];
      self.reachability = nil;
    }

    - (void)getNetworkStatus
    {
        if ([Reachability   reachabilityForLocalWiFi].currentReachabilityStatus != NotReachable) {
            NSLog(@"是wifi");
        } else if ([Reachability reachabilityForInternetConnection].currentReachabilityStatus != NotReachable) {
            NSLog(@"是手机自带网络");
        } else {
            NSLog(@"网络有问题");
        }
     }

文/闲得一B(简书作者)
原文链接:http://www.jianshu.com/p/e0a9e3cd327f
著作权归作者所有,转载请联系作者获得授权,并标注“简书作者”。

时间: 2024-11-05 08:25:33

AFNetworking 3.0的相关文章

AFNetworking 3.0迁移指南

AFNetworking是一款在OS X和iOS下都令人喜爱的网络库.为了迎合iOS新版本的升级, AFNetworking在3.0版本中删除了基于 NSURLConnection API的所有支持.如果你的项目以前使用过这些API,建议您立即升级到基于 NSURLSession 的API的AFNetworking的版本.本指南将引导您完成这个过程. 本指南是为了引导使用AFNetworking 2.x升级到最新的版本API,以达到过渡的目的,并且解释了新增和更改的设计结构. 新设备要求: iO

AFNetworking 2.0 新特性讲解之AFHTTPSessionManager

AFNetworking 2.0 新特性讲解之AFHTTPSessionManager (2014-02-17 11:56:24) 转载▼     AFNetworking 2.0 相比1.0 API 接口改动还是很大的. 其中一个便是 AFURLSessionManager,当然如果你不太熟悉,或者为了兼容低版本,你依然可以选择AFHTTPRequestOperationManager,AFURLSessionManager是基于 NSURLSessionConfiguration(IOS 7

iOS开发 AFNetworking 3.0使用遇到的问题

前段时间写了一个iOS开发之AFNetworking 3.0.4使用这篇文章,是基本的用法,昨天在使用的时候又出现了几个问题,特地俩记录下,希望能帮到大家! 问题一 我是做一个获取手机验证码的功能,进行一个网络请求,验证码也发给我了,后台的也跟我说请求成功了,但是我这边打印信息显示直接进入了错误的回调...如下图: 验证码获取返回格式问题 报错说是返回类型不一致,后来查明原因,是返回的格式问题(虽然后台跟我说返回的json)需要添加上这么一句话: //如果报接受类型不一致请替换一致text/ht

AFNetworking 3.0.4 的使用

AFNetworking 本文永久链接:http://www.cnblogs.com/qianLL/p/5342593.html pod 'AFNetworking', '~>3.0.4'    <-------第三方 具体他的pod的过过程 http://www.cnblogs.com/qianLL/p/5331624.html 代码如下 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29

【IOS】AFNetworking 2.0中XML请求处理专题

AFNetworking 2.0中XML请求处理专题 1.1     XML请求处理 1.1.1  xml处理机制 因为AFNetworking2.0中,对于响应返回的xml格式没有做专门的解析处理,因此需要开发者自己来做处理.在笔者的项目中,使用了一个叫AFGDataXMLRequestOperation的第三方类库来统一处理. 该库的xml解析逻辑基于GDataXML-HTML类库.不过类库处理逻辑应该还是基于AFNetworking 1.0版本,有两处需要做适配修改,不然调试不过: 1.在

AFNetworking 3.0 断点续传 使用记录

最近项目中用到了压缩包下载,使用AFNetworking 3.0 下载压缩包 支持断点续传 代码如下: #import "HDInternet_handler.h" #import "AFNetworking.h" #import "ASIHTTPRequest.h" @interface HDInternet_handler ()<NSURLSessionDelegate> @end @implementation HDIntern

iOS 8:【转】AFNetworking 2.0

源地址:http://nshipster.cn/afnetworking-2/ AFNetworking 是当前 iOS 和 OS X 开发中最广泛使用的开源项目之一.它帮助了成千上万叫好又叫座的应用,也为其它出色的开源库提供了基础.这个项目是社区里最活跃.最有影响力的项目之一,拥有 8700 个 star.2200 个 fork 和 130 名贡献者. 从各方面来看,AFNetworking 几乎已经成为主流. 但你有没有听说过它的新版呢? AFNetworking 2.0. 这一周的 NSH

AFNetworking 2.0 -1016错误解决办法

AFNetworking 2.0面世很久了.新版本重写了一遍,做了大量的改动.用起来也很方便.但在某些时候使用也会遇到一些问题.譬如在请求后台数据的时候,应该返回的是Json数据,但是打印却得到了错误的信息提示:Request failed: unacceptable content-type: text/html errorCode = -1016. 网上大多数的解答都是: /// ///针对AFN2.0前的做法 [AFJSONRequestOperation addAcceptableCon

AFNetworking 2.0 翻译

http://www.tuicool.com/articles/zyEBjua AFNetworking 2.0 翻译

AFNetworking 3.0 源码解读(四)之 AFURLResponseSerialization

本篇是AFNetworking 3.0 源码解读的第四篇了. AFNetworking 3.0 源码解读(一)之 AFNetworkReachabilityManager AFNetworking 3.0 源码解读(二)之 AFSecurityPolicy AFNetworking 3.0 源码解读(三)之 AFURLRequestSerialization 这次主要讲AFURLResponseSerialization(HTTP响应)这一个类的知识. 这是一个协议,只要遵守这个协议,就要实现N