您的位置:首页 > 其它

AFNetWorking3.0的简单使用

2016-07-08 14:20 429 查看
AFNetWorking3.0的使用

实现GET、POST请求

实现文件、图片上传、下载

检测网络状态

设置请求头数据

[objc] view
plain copy

 

 





#import "ViewController.h"  

  

#import "AFNetworking.h"//提供了数据的异步下载功能  

  

#import "UIKit+AFNetworking.h"//常用控件添加了类别,这些控件中使用图片可以异步加载  

//UIImageView setImageWithURL  

  

@interface ViewController ()  

  

@end  

  

@implementation ViewController  

  

- (void)viewDidLoad {  

    [super viewDidLoad];  

    // Do any additional setup after loading the view, typically from a nib.  

      

//    实现GET请求(JSON,XML,HTML)  

//    [self testGet];  

      

//    [self testPost];  

      

//    [self uploadFile];  

//    同步下载  

//    [self downloadFile];  

//    文件异步下载  

//    [self asyncDownloadFile];  

      

//    [self checkNetWorkStatus];  

  

//    [self setHTTPHeadField];  

}  

- (void)setHTTPHeadField{  

  

    //抓包做项目  

    AFHTTPSessionManager *manager = [AFHTTPSessionManager manager];  

    //添加了请求头 域  

    [manager.requestSerializer setValue:@"123" forHTTPHeaderField:@"test"];  

      

}  

- (void)checkNetWorkStatus{  

  

    AFHTTPSessionManager *manager = [[AFHTTPSessionManager alloc] initWithBaseURL:[NSURL URLWithString:@"www.baidu.com"]];  

      

    [manager.reachabilityManager setReachabilityStatusChangeBlock:^(AFNetworkReachabilityStatus status) {  

        NSArray *array = @[@"未知",@"不可达",@"WAN",@"Wifi"];  

        NSLog(@"状态 = %@",array[status + 1]);  

    }];  

    [manager.reachabilityManager startMonitoring];  

}  

- (void)asyncDownloadFile{  

  

    UIImageView *imageView = [[UIImageView alloc] init];  

    imageView.frame = CGRectMake(100, 100, 300, 300);  

    [self.view addSubview: imageView];  

    //异步加载图片  

//    imageView setImageWithURL:<#(nonnull NSURL *)#>  

      

    //参数2:下载提示图片  

//    imageView setImageWithURL:<#(nonnull NSURL *)#> placeholderImage:<#(nullable UIImage *)#>  

      

    //参数1:   传入图片网址  

    //参数2:   表示下载提示图片  

    //参数3:   下载执行block  

    //参数4:   下载失败block  

//    imageView setImageWithURLRequest:<#(nonnull NSURLRequest *)#> placeholderImage:<#(nullable UIImage *)#> success:<#^(NSURLRequest * _Nonnull request, NSHTTPURLResponse * _Nullable response, UIImage * _Nonnull image)success#> failure:<#^(NSURLRequest * _Nonnull request, NSHTTPURLResponse * _Nullable response, NSError * _Nonnull error)failure#>  

      

      

    __weak typeof(imageView) iv = imageView;  

    [imageView setImageWithURLRequest:[NSURLRequest requestWithURL:[NSURL URLWithString:@"http://p2.gexing.com/G1/M00/BD/E8/rBACFFIex5_BUKxwAAAVRVJ7W9I803_200x200_3.jpg"]] placeholderImage:nil success:^(NSURLRequest * _Nonnull request, NSHTTPURLResponse * _Nullable response, UIImage * _Nonnull image) {  

          

        iv.image = image;  

          

    } failure:^(NSURLRequest * _Nonnull request, NSHTTPURLResponse * _Nullable response, NSError * _Nonnull error) {  

          

    }];  

      

}  

- (void)downloadFile{  

  

    NSString *urlString = @"http://d2.eoemarket.com/app0/147/147800/apk/1289732.apk?channel_id=426";  

    AFHTTPSessionManager *manager = [AFHTTPSessionManager manager];  

    manager.responseSerializer = [AFHTTPResponseSerializer serializer];  

    //参数1:网络请求  

    //参数2;下载进度  

    //参数3:文件存放位置  

    //参数4:完成后执行block  

    NSURLSessionDownloadTask *task = [manager downloadTaskWithRequest:[NSURLRequest requestWithURL:[NSURL URLWithString:urlString]] progress:^(NSProgress * _Nonnull downloadProgress) {  

        NSLog(@"downloadProgress = %f%%",downloadProgress.fractionCompleted * 100);  

    } destination:^NSURL * _Nonnull(NSURL * _Nonnull targetPath, NSURLResponse * _Nonnull response) {  

        NSString *path = [NSString stringWithFormat:@"%@/Documents/zhihu.apk",NSHomeDirectory()];  

        NSLog(@"path = %@",path);  

        return [NSURL fileURLWithPath:path];  

    } completionHandler:^(NSURLResponse * _Nonnull response, NSURL * _Nullable filePath, NSError * _Nullable error) {  

        NSLog(@"success");  

    }];  

    [task resume];  

      

}  

- (void)uploadFile{  

  

    NSString *urlString = @"http://quiet.local/upload/upload.php";  

    NSString *path = [[NSBundle mainBundle] pathForResource:@"20130717220646_FxWvw.jpg" ofType:nil];  

    AFHTTPSessionManager *manager = [AFHTTPSessionManager manager];  

    manager.responseSerializer = [AFHTTPResponseSerializer serializer];  

    //参数1:网址  

    //参数3:传入formData,上传数据放里面  

    [manager POST:urlString parameters:nil constructingBodyWithBlock:^(id<AFMultipartFormData>  _Nonnull formData) {  

          

        [formData appendPartWithFileURL:[NSURL fileURLWithPath:path] name:@"file" fileName:@"20130717220646_FxWvw.jpg" mimeType:@"image/jpeg" error:nil];  

          

    } progress:^(NSProgress * _Nonnull uploadProgress) {  

        NSLog(@"上传进度 = %f",uploadProgress.fractionCompleted);  

    } success:^(NSURLSessionDataTask * _Nonnull task, id  _Nullable responseObject) {  

        NSString *str = [[NSString alloc] initWithData:responseObject encoding:NSUTF8StringEncoding];  

        NSLog(@"str = %@",str);  

    } failure:^(NSURLSessionDataTask * _Nullable task, NSError * _Nonnull error) {  

        NSLog(@"error = %@",error);  

    }];  

      

}  

- (void)testPost{  

  

    //  GET和POST都是发起请求的形式  

    //  GET请求的数据在URL的参数中  

    //  POST请求的数据放在请求体中,安全性较高  

    //  注意:POST类型的请求不要直接放在浏览器中请求  

    NSString *urlString = @"http://quiet.local/posttest/login.php";  

      

    AFHTTPSessionManager *manager = [AFHTTPSessionManager manager];  

    manager.responseSerializer = [AFHTTPResponseSerializer serializer];  

    [manager POST:urlString parameters:@{@"username":@"test",@"password":@"123"} progress:^(NSProgress * _Nonnull uploadProgress) {  

          

    } success:^(NSURLSessionDataTask * _Nonnull task, id  _Nullable responseObject) {  

        NSString *str = [[NSString alloc] initWithData:responseObject encoding:NSUTF8StringEncoding];  

        NSLog(@"str = %@",str);  

    } failure:^(NSURLSessionDataTask * _Nullable task, NSError * _Nonnull error) {  

         NSLog(@"error = %@",error);  

    }];  

      

}  

  

- (void)testGet{  

  

    NSString *urlString = @"http://www.baidu.com/s";  

    AFHTTPSessionManager *manager = [AFHTTPSessionManager manager];  

    //参数1:传入网址  

    //参数2:传入网址的参数  

    //下载进度  

    //成功之后执行block  

    //失败之后执行block  

    //注意:默认情况下请求获取数据必须是JSON数据,而且content-type:json/appliacation,text/json,如果不是,报—1016错误  

    manager.responseSerializer = [AFHTTPResponseSerializer serializer];  

    [manager GET:urlString parameters:@{@"wd":@"kaka"} progress:^(NSProgress * _Nonnull downloadProgress) {  

        NSLog(@"downloadProgress = %f",downloadProgress.fractionCompleted);  

    } success:^(NSURLSessionDataTask * _Nonnull task, id  _Nullable responseObject) {  

        NSString *str = [[NSString alloc] initWithData:responseObject encoding:NSUTF8StringEncoding];  

        NSLog(@"str = %@",str);  

    } failure:^(NSURLSessionDataTask * _Nullable task, NSError * _Nonnull error) {  

        NSLog(@"error = %@",error);  

    }];  

      

}  

- (void)didReceiveMemoryWarning {  

    [super didReceiveMemoryWarning];  

    // Dispose of any resources that can be recreated.  

}  

  

@end
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: