AFNetworking3.0使用

AFHTTPSessionManager:

根据这个对象可以对请求千设置一些参数和状态

//得到一个session manager
     AFHTTPSessionManager *manager = [AFHTTPSessionManager manager];

    NSOperationQueue *operationQueue = [manager operationQueue];
    // 判断网络状态
    [manager.reachabilityManager setReachabilityStatusChangeBlock:^(AFNetworkReachabilityStatus status) {
        switch (status) {
            case AFNetworkReachabilityStatusReachableViaWWAN:
            case AFNetworkReachabilityStatusReachableViaWiFi:
            {
                [operationQueue setSuspended:NO];
            }
                break;

            case AFNetworkReachabilityStatusNotReachable:
            default:
            {
                 [operationQueue setSuspended:YES];
            }

                break;
        }
    }];

发送请求以GET为例子:

    [manager GET:@"http://apis.baidu.com/apistore/iplookupservice/iplookup" parameters:para progress:nil success:^(NSURLSessionDataTask * _Nonnull task, id  _Nullable responseObject) {
        NSString *str = responseObject ;
        NSLog(@"suc >>>%@" ,[NSThread currentThread]);
    } failure:^(NSURLSessionDataTask * _Nullable task, NSError * _Nonnull error) {

    }];

这里的Block块在主线程,因为底层已经处理了

这是指定String 类型的URL 还可以不用系统帮我们封装,自己构造request

NSMutableURLRequest *request = [[AFHTTPRequestSerializer serializer] requestWithMethod:@"GET" URLString:httpUrl parameters:[NSDictionary dictionaryWithObjectsAndKeys:@"117.89.35.58",@"ip" ,nil] error:nil];
    [request addValue:@"5560971e1657a727c71e04ce5b145798" forHTTPHeaderField:@"apikey"];

建议Request用AF建议的方法构造,AFHTTPRequestSerializer 用于构造序列化的Request,然后交给AFHTTPSessionManager处理得到一个NSURLSessionDataTask

 NSURLSessionDataTask *task = [manager dataTaskWithRequest:request completionHandler:^(NSURLResponse * _Nonnull response, id  _Nullable responseObject, NSError * _Nullable error) {
       // NSLog(@"res ===%@" , responseObject);
        NSLog(@"suc >>>%@" ,[NSThread currentThread]);
        NSDictionary *dic = responseObject;
        NSLog(@"dic ==%@" ,dic);
    }];

这里回调也是主线程

NSURLSessionDataTask有两个方法用来控制任务状态

- (void)suspend;

- (void)resume;

得到NSURLSessionDataTask之后默认状态是Suspend必须调用resume

AFJSONResponseSerializer 默认初始化@"application/json", @"text/json", @"text/javascript"有这几种,如果内容格式为就会报错@"text/plain",解决办法就是添加进去就行了

时间: 2024-10-24 23:41:36

AFNetworking3.0使用的相关文章

IOS 网络浅析-(十一 三方 AFNetworking3.0简介)

AFNetworking3.0是目前最新的版本,本来打算介绍一下2.6,但是想想2.6名不久矣,就决定不介绍了,有兴趣的小伙伴可以上网查一查.下面我就开始进入正题了. 目前使用人数最多的第三方网络库,没有之一.从开始的NSURLConnection到现在的NSURLSession,它都一直保持着与苹果的步调一致,而由它也衍生出大量的相关第三方网络功能库,不仅仅因为他的可靠,好用,一直保持着维护更新,也是为什么它这么受到广大程序员的青睐. 上传data // // ViewController.m

iOS_SN_基于AFNetworking3.0网络封装

转发文章,原地址:http://www.henishuo.com/base-on-afnetworking3-0-wrapper/?utm_source=tuicool&utm_medium=referral 前言 对于开发人员来说,学习网络层知识是必备的,任何一款App的开发,都需要到网络请求接口.很多朋友都还在使用原生的NSURLConnection一行一行地写,代码到处是,这样维护起来更困难了. 对于使用AFNetworking的朋友来说,很多朋友都是直接调用AFNetworking的AP

iOS- 利用AFNetworking3.0+(最新AFN) - 实现文件断点下载

0.导入框架准备工作 •1. 将AFNetworking3.0+框架程序拖拽进项目 •2. 或使用Cocopod 导入AFNetworking3.0+ •3.  引入 #import "AFNetworking.h" ----> 1.UI准备工作 A. 定义一个全局的 NSURLSessionDownloadTask:下载管理句柄    由其负责所有的网络操作请求 1 2 3 4 5 @interface ViewController () {     // 下载句柄     N

基于AFNetworking3.0网络封装

概述 对于开发人员来说,学习网络层知识是必备的,任何一款App的开发,都需要到网络请求接口.很多朋友都还在使用原生的NSURLConnection一行一行地写,代码到处是,这样维护起来更困难了. 对于使用AFNetworking的朋友来说,很多朋友都是直接调用AFNetworking的API,这样不太好,无法做到全工程统一配置. 最好的方式就是对网络层再封装一层,全工程不允许直接使用AFNetworking的API,必须调用我们自己封装的一层,如此一来,任何网络配置都可以在这一层里配置好,使用的

关于使用AFNetworking3.0.0报错的解决方案与建议

最近,AFNetworking迎来了重大更新,从之前的2.6.3升级到了3.0.0  .下面是AFNetworking的版本情况: . 从上面可以看到,里面包含Serialization,Security,Reachability,NSURLSession,UIKit5个部分,从Cocoapods安装之后,3.0.0目录结构如下: . 但是使用3.0.0会遇到一个很严重的问题,就是不能使用AFHTTPRequestOperationManager,AFHTTPRequestOperation这两

AFNetworking3.0检查网络网络状态

我们知道AFNetworking3.0版本中,弃用了AFHTTPRequestOperationManager.那么进行网络判断的时候就需要使用 AFNetworkReachabilityManager

AFNetworking3.0为何弃用了NSURLConnection

http://blog.csdn.net/qq_34101611/article/details/51698524 上篇博客说到AFNetworking3.0只提供了NSURLSession的支持.其实,NSURLSession在iOS7.0被Apple提出后,苹果就对其良好的API设计大力推崇,认为NSURLSession是Foundation中网络的未来,并且是一个美好的未来.然而它的使用效果似乎一直都和NSURLConnection不相伯仲,业界也认为NSURLConnection 不会被

【转载】基于AFNetWorking3.0的图片缓存分析

原文出处: Yasin的简书 理论 不喜欢理论的可以直接跳到下面的Demo实践部分 缓存介绍 缓存按照保存位置可以分为两类:内存缓存.硬盘缓存(FMDB.CoreData…).我们常说的网络请求缓存包含内存缓存.硬盘缓存和URL缓存. 图片缓存思路 图片缓存流程图.png URL缓存 网络请求除了客户端需要做简单的配置外,最主要需要服务器支持,服务端也很简单,只需要在response里面设置Cache-Control字段就行了. 最常见的URL缓存实现方式:NSURLCache.NSURLCac

AFNetWorking3.0使用 自签名证书的https请求

前几日,项目组出于安全角度的考虑,要求项目中的请求使用https请求,因为是企业内部使用的app,因此使用了自签名的证书,而自签名的证书是不受信任的,所以我们就需要自己来做证书的验证,包括服务器验证客户端的证书和我们要信任服务器的证书,SSL双向认证的原理我这里就不赘述了,这里提供两篇博客 iOS安全系列之一:HTTPS: http://oncenote.com/2014/10/21/Security-1-HTTPS/ iOS安全系列之二:HTTPS进阶: http://oncenote.com

NSURLSession与AFNetworking3.0

下面是用GET方式请求一个页面数据的示例: AFNetworking 2.x NSString *siteUrl = @"http://webinar.ofweek.com/readDemoFile.action"; NSDictionary *parameters = @{@"activity.id":@"9866033",@"user.id":@"2"}; AFHTTPRequestOperationM