IOS框架学习之AFN

2018-05-24  本文已影响0人  最强的小强
  1. 首先利用 CocoaPods 把框架AFN导入到项目中。
  2. 然后在ViewController里面导入<AFNetworking.h>, http请求记得配置 APP Transport。
  3. 然后就可以具体实现了:
#pragma mark - get请求
-(void)get
{
    // 创建会话管理者
    AFHTTPSessionManager *manager=[AFHTTPSessionManager manager];
    
    // 写参数
    NSDictionary *paramDict=@{
                              @"username":@"520it",
                              @"pwd":@"520it",
                              @"type":@"JSON"
                              };
    // 发送get请求
    [manager GET:@"http://120.25.226.186:32812/login" parameters:paramDict progress:nil success:^(NSURLSessionDataTask * _Nonnull task, id  _Nullable responseObject) {
        NSLog(@"%@-%@",[responseObject class],responseObject);
    } failure:^(NSURLSessionDataTask * _Nullable task, NSError * _Nonnull error) {
        NSLog(@"请求失败--%@",error);
    }];
}

#pragma mark - post请求
-(void)post
{
    // 创建会话管理者
    AFHTTPSessionManager *manager=[AFHTTPSessionManager manager];
    
    // 写参数
    NSDictionary *paramDict=@{
                              @"username":@"520it",
                              @"pwd":@"520it",
                              @"type":@"JSON"
                              };
    // 发送post请求
    [manager POST:@"http://120.25.226.186:32812/login" parameters:paramDict progress:nil success:^(NSURLSessionDataTask * _Nonnull task, id  _Nullable responseObject) {
        NSLog(@"%@-%@",[responseObject class],responseObject);
    } failure:^(NSURLSessionDataTask * _Nullable task, NSError * _Nonnull error) {
        NSLog(@"请求失败--%@",error);
    }];
}

#pragma mark -  文件下载
- (void)download
{
    // 创建会话管理者
    AFHTTPSessionManager *manager=[AFHTTPSessionManager manager];
    NSURL *url=[NSURL URLWithString:@"http://120.25.226.186:32812/resources/images/minion_01.png"];
    
    NSURLRequest *request=[NSURLRequest requestWithURL:url];
    
    
    // 下载文件
    NSURLSessionDownloadTask *download=[manager downloadTaskWithRequest: request
        progress:^(NSProgress * _Nonnull downloadProgress) {
            // 监听下载进度
            NSLog(@"%f",1.0*downloadProgress.completedUnitCount/downloadProgress.totalUnitCount);
            
        } destination:^NSURL * _Nonnull(NSURL * _Nonnull targetPath, NSURLResponse * _Nonnull response) {
            
        NSString *fullPath=[[NSSearchPathForDirectoriesInDomains(NSCachesDirectory, NSUserDomainMask, YES) lastObject] stringByAppendingPathComponent:response.suggestedFilename];
        NSLog(@"targetPath:%@",targetPath);
        NSLog(@"fullPath:%@",fullPath);
            
            return [NSURL fileURLWithPath:fullPath];
        } completionHandler:^(NSURLResponse * _Nonnull response, NSURL * _Nullable filePath, NSError * _Nullable error) {
            NSLog(@"%@",filePath);
        }];
    
    [download resume];
}
#pragma mark - 文件上传
- (void)upload
{
    // 1. 创建会话管理者
    AFHTTPSessionManager *manager=[AFHTTPSessionManager manager];
    
    // 2. 发送POST请求上传文件
    /**
     第一个参数:请求路径
     第二个参数:字典(非文件参数)
     第三个参数:constructingBodyWithBlock 处理要上传的文件数据
     第四个参数:进度回调
     第五个参数:成功回调 responseObject:响应体信息
     第六个参数:失败回调
     */
    [manager POST:@"http://120.25.226.186:32812/upload" parameters:nil constructingBodyWithBlock:^(id<AFMultipartFormData>  _Nonnull formData) {
        
        UIImage *image=[UIImage imageNamed:@"aaa"];
        NSData *imageData=UIImagePNGRepresentation(image);
        //使用formData来拼接数据
        /*
         第一个参数:二进制数据 要上传的文件参数
         第二个参数:服务器规定的
         第三个参数:该文件上传到服务器以什么名称保存
         */
        [formData appendPartWithFileURL:[NSURL fileURLWithPath:@"/Users/xzq/Desktop/aaa.png"] name:@"file" error:nil];
        
    } progress:^(NSProgress * _Nonnull uploadProgress) {
        NSLog(@"%f",1.0 * uploadProgress.completedUnitCount/uploadProgress.totalUnitCount);
    } success:^(NSURLSessionDataTask * _Nonnull task, id  _Nullable responseObject) {
        NSLog(@"上传成功--%@",responseObject);
    } failure:^(NSURLSessionDataTask * _Nullable task, NSError * _Nonnull error) {
        NSLog(@"上传失败--%@",error);
    }];

}
上一篇下一篇

猜你喜欢

热点阅读