AFNetworking 3.0使用

2016-10-04  本文已影响0人  暖光照

导入头文件

  #import "AFNetworking.h"

GET/POST 请求

NSString *URL=@"http://ipad-bjwb.bjd.com.cn/DigitalPublication/publish/Handler/APINewsList.ashx?";
// 请求的参数
NSDictionary *dic = [NSDictionary dictionaryWithObjectsAndKeys:@"20131129", @"date", @"1", @"startRecord", @"5", @"len", @"1234567890", @"udid", @"Iphone", @"terminalType", @"213", @"cid", nil];

// 初始化Manager
AFHTTPSessionManager *manager = [AFHTTPSessionManager manager];
// 设置responseSerializer
manager.responseSerializer=[AFHTTPResponseSerializer serializer];
//若为GET请求,会自动将参数拼接在URL后。
//也可以自己拼接在URL上,parameters参数为nil。
[manager POST:URL parameters:dic progress:^(NSProgress * _Nonnull downloadProgress) {
    NSLog(@"%lf",1.0 *downloadProgress.completedUnitCount / downloadProgress.totalUnitCount);
    
} success:^(NSURLSessionDataTask * _Nonnull task, id  _Nullable responseObject) {
    //请求成功
    NSDictionary *dic = [NSJSONSerialization JSONObjectWithData:responseObject options:NSJSONReadingMutableContainers | NSJSONReadingMutableLeaves error:nil];
    
    NSLog(@"%@", dic);
    
} failure:^(NSURLSessionDataTask * _Nullable task, NSError * _Nonnull error) {
    // 请求失败
    NSLog(@"%@", [error localizedDescription]);
    
}];

下载

 //1.创建管理者对象
AFHTTPSessionManager *manager = [AFHTTPSessionManager manager];

//2.确定请求的URL地址
NSURL *url = [NSURL URLWithString:@"http://pic33.nipic.com/20130916/3420027_192919547000_2.jpg"];

//3.创建请求对象
NSURLRequest *request = [NSURLRequest requestWithURL:url];

//下载任务
NSURLSessionDownloadTask *task = [manager downloadTaskWithRequest:request progress:^(NSProgress * _Nonnull downloadProgress) {
    //打印下载进度
    NSLog(@"%lf",1.0 * downloadProgress.completedUnitCount / downloadProgress.totalUnitCount);
    
} destination:^NSURL * _Nonnull(NSURL * _Nonnull targetPath, NSURLResponse * _Nonnull response) {
    //下载地址
    NSLog(@"默认下载地址:%@",targetPath);
    
    //设置下载路径,通过沙盒获取缓存地址,最后返回NSURL对象
    NSString *filePath = [NSSearchPathForDirectoriesInDomains(NSCachesDirectory, NSUserDomainMask, YES)lastObject];
    
    return [NSURL URLWithString:filePath];
    
    
} completionHandler:^(NSURLResponse * _Nonnull response, NSURL * _Nullable filePath, NSError * _Nullable error) {
    
    //下载完成调用的方法
    NSLog(@"%@--%@",response,filePath);
    
}];

//开始启动任务
[task resume];

监听网络状态

 //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:
            NSLog(@"未知网络状态");
            break;
        case AFNetworkReachabilityStatusNotReachable:
            NSLog(@"无网络");
            break;
            
        case AFNetworkReachabilityStatusReachableViaWWAN:
            NSLog(@"蜂窝数据网");
            break;
            
        case AFNetworkReachabilityStatusReachableViaWiFi:
            NSLog(@"WiFi网络");
            
            break;
            
        default:
            break;
    }
    
}] ;

补充

URL含有中文
NSString* encodedString = [urlString stringByAddingPercentEscapesUsingEncoding:NSUTF8StringEncoding];
上一篇下一篇

猜你喜欢

热点阅读