http://www.sufeinet.com/plugin.php?id=keke_group

苏飞论坛

 找回密码
 马上注册

QQ登录

只需一步,快速开始

分布式系统框架(V2.0) 轻松承载百亿数据,千万流量!讨论专区 - 源码下载 - 官方教程

HttpHelper爬虫框架(V2.7-含.netcore) HttpHelper官方出品,爬虫框架讨论区 - 源码下载 - 在线测试和代码生成

HttpHelper爬虫类(V2.0) 开源的爬虫类,支持多种模式和属性 源码 - 代码生成器 - 讨论区 - 教程- 例子

查看: 3439|回复: 4

[相关工具] AFNetworking3.0使用详解

[复制链接]
发表于 2018-12-20 14:46:52 | 显示全部楼层 |阅读模式


AFN是网络请求类第三方库使用量最大的。3.0版本废弃了基于NSURLConnetion封装的AFHTTPRequestOperationManager,使用了基于NSURLSession封装的AFHTTPSessionManager。


下载地址:https://github.com/AFNetworking/AFNetworking.git


Get请求

[Objective-C] 纯文本查看 复制代码
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请求

[Objective-C] 纯文本查看 复制代码
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) {
 
}];


下载

[Objective-C] 纯文本查看 复制代码
//1.创建管理者对象
    AFHTTPSessionManager *manager = [AFHTTPSessionManager manager];
    //2.确定请求的URL地址
    NSURL *url = [NSURL URLWithString:@""];
 
    //3.创建请求对象
    NSURLRequest *request = [NSURLRequest requestWithURL:url];
 
    //下载任务
    NSURLSessionDownloadTask *task = [manager downloadTaskWithRequest:request progress:^(NSProgress * _Nonnull downloadProgress) {
        //打印下下载进度
        WKNSLog(@"%lf",1.0 * downloadProgress.completedUnitCount / downloadProgress.totalUnitCount);
 
    } destination:^NSURL * _Nonnull(NSURL * _Nonnull targetPath, NSURLResponse * _Nonnull response) {
        //下载地址
        WKNSLog(@"默认下载地址:%@",targetPath);
 
        //设置下载路径,通过沙盒获取缓存地址,最后返回NSURL对象
        NSString *filePath = [NSSearchPathForDirectoriesInDomains(NSCachesDirectory, NSUserDomainMask, YES)lastObject];
        return [NSURL URLWithString:filePath];
 
 
    } completionHandler:^(NSURLResponse * _Nonnull response, NSURL * _Nullable filePath, NSError * _Nullable error) {
 
        //下载完成调用的方法
        WKNSLog(@"下载完成:");
        WKNSLog(@"%@--%@",response,filePath);
 
    }];
 
    //开始启动任务
    [task resume];


上传

[Objective-C] 纯文本查看 复制代码
//1。创建管理者对象
    AFHTTPSessionManager *manager = [AFHTTPSessionManager manager];
 
    //2.上传文件
    NSDictionary *dict = @{@"username":@"1234"};
 
    NSString *urlString = @"22222";
    [manager POST:urlString parameters:dict constructingBodyWithBlock:^(id<AFMultipartFormData>  _Nonnull formData) {
        //上传文件参数
        UIImage *iamge = [UIImage imageNamed:@"123.png"];
        NSData *data = UIImagePNGRepresentation(iamge);
        //这个就是参数
        [formData appendPartWithFileData:data name:@"file" fileName:@"123.png" mimeType:@"image/png"];
 
    } progress:^(NSProgress * _Nonnull uploadProgress) {
 
        //打印下上传进度
        WKNSLog(@"%lf",1.0 *uploadProgress.completedUnitCount / uploadProgress.totalUnitCount);
    } success:^(NSURLSessionDataTask * _Nonnull task, id  _Nullable responseObject) {
 
        //请求成功
        WKNSLog(@"请求成功:%@",responseObject);
 
    } failure:^(NSURLSessionDataTask * _Nullable task, NSError * _Nonnull error) {
 
        //请求失败
        WKNSLog(@"请求失败:%@",error);
    }];


检测网络状态

[Objective-C] 纯文本查看 复制代码
//1.创建网络监测者
    AFNetworkReachabilityManager *manager = [AFNetworkReachabilityManager sharedManager];
 
    /*枚举里面四个状态  分别对应 未知 无网络 数据 WiFi
     typedef NS_ENUM(NSInteger, AFNetworkReachabilityStatus) {
         AFNetworkReachabilityStatusUnknown          = -1,      未知
         AFNetworkReachabilityStatusNotReachable     = 0,       无网络
         AFNetworkReachabilityStatusReachableViaWWAN = 1,       蜂窝数据网络
         AFNetworkReachabilityStatusReachableViaWiFi = 2,       WiFi
     };
     */
 
    [manager setReachabilityStatusChangeBlock:^(AFNetworkReachabilityStatus status) {
        //这里是监测到网络改变的block  可以写成switch方便
        //在里面可以随便写事件
        switch (status) {
            case AFNetworkReachabilityStatusUnknown:
                WKNSLog(@"未知网络状态");
                break;
            case AFNetworkReachabilityStatusNotReachable:
                WKNSLog(@"无网络");
                break;
 
            case AFNetworkReachabilityStatusReachableViaWWAN:
                WKNSLog(@"蜂窝数据网");
                break;
 
            case AFNetworkReachabilityStatusReachableViaWiFi:
                WKNSLog(@"WiFi网络");
 
                break;
 
            default:
                break;
        }
 
    }] ;




1. 开通SVIP会员,免费下载本站所有源码,不限次数据,不限时间
2. 加官方QQ群,加官方微信群获取更多资源和帮助
3. 找站长苏飞做网站、商城、CRM、小程序、App、爬虫相关、项目外包等点这里
发表于 2018-12-20 15:08:23 | 显示全部楼层
无回帖,不论坛,这才是人道。
发表于 2018-12-20 15:35:58 | 显示全部楼层
我只是路过打酱油的。
发表于 2018-12-20 16:32:41 | 显示全部楼层
看到这帖子真是高兴!
发表于 2018-12-22 11:12:13 | 显示全部楼层
IOS的关键字 好长啊
您需要登录后才可以回帖 登录 | 马上注册

本版积分规则

QQ|手机版|小黑屋|手机版|联系我们|关于我们|广告合作|苏飞论坛 ( 豫ICP备18043678号-2)

GMT+8, 2024-12-23 01:19

© 2014-2021

快速回复 返回顶部 返回列表