码迷,mamicode.com
首页 > 移动开发 > 详细

iOS网络-AFNetworking基本使用,文件下载,上传

时间:2016-01-19 00:04:13      阅读:591      评论:0      收藏:0      [点我收藏+]

标签:

发送GET请求

-(void)get
{
    //1.创建会话管理者
    AFHTTPSessionManager *manager = [AFHTTPSessionManager manager];

    NSDictionary *dictM = @{
                            @"username":@"520it",
                            @"pwd":@"520it",
                            @"type":@"JSON"
                            };

    //2.发送请求
    /*
     第一个参数:请求路径的一部分(NSString)
        以前: http://120.25.226.186:32812/login?username=123&pwd=123&type=JSON
             协议头+主机地址+接口名称+?+参数1&参数2
        现在: http://120.25.226.186:32812/login
             协议头+主机地址+接口名称
     第二个参数:参数,以字典方式传递
     第三个参数:progress 进度 传递nil
     第四个参数:success 成功之后的回调

        task:请求Task
        responseObject:响应体
        task.response:响应头信息
     第五个参数:failure 失败之后的回调
        task:请求Task
        error:错误信息
     */
    [manager GET:@"http://120.25.226.186:32812/login" parameters:dictM progress:nil success:^(NSURLSessionDataTask * _Nonnull task, id  _Nullable responseObject) {

        NSLog(@"请求成功---%@--%@",responseObject,[responseObject class]);

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

         NSLog(@"请求失败----%@",error);
    }];
}

发送POST请求

-(void)post
{
    //1.创建会话管理者
    AFHTTPSessionManager *manager = [AFHTTPSessionManager manager];

    NSDictionary *dictM = @{
                            @"username":@"520it",
                            @"pwd":@"520",
                            @"type":@"JSON"
                            };

    //2.发送请求
    /*
     第一个参数:请求路径的一部分(NSString)
     以前: http://120.25.226.186:32812/login?username=123&pwd=123&type=JSON
     协议头+主机地址+接口名称+?+参数1&参数2
     现在: http://120.25.226.186:32812/login
     协议头+主机地址+接口名称
     第二个参数:参数,以字典方式传递
     第三个参数:progress 进度 传递nil
     第四个参数:success 成功之后的回调
     task:请求Task
     responseObject:响应体
     task.response:响应头信息
     第五个参数:failure 失败之后的回调
     task:请求Task
     error:错误信息
     */
    [manager POST:@"http://120.25.226.186:32812/login" parameters:dictM progress:nil success:^(NSURLSessionDataTask * _Nonnull task, id  _Nullable responseObject) {

        NSLog(@"请求成功---%@--%@",responseObject,[responseObject class]);

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

        NSLog(@"请求失败----%@",error);
    }];
}

 文件下载

//1.创建会话管理者
    AFHTTPSessionManager *manager = [AFHTTPSessionManager manager];

    NSURLRequest *request = [NSURLRequest requestWithURL:[NSURL URLWithString:@"http://120.25.226.186:32812/resources/images/minion_01.png"]];

    //2.创建下载任务
    /*
     第一个参数:请求对象
     第二个参数:progress 进度回调
        downloadProgress.completedUnitCount:已经完成的大小
        downloadProgress.totalUnitCount:文件的总大小
     第三个参数:destination 自动完成文件剪切操作
        返回值:该文件应该被剪切到哪里
        targetPath:临时路径 tmp NSURL
        response:响应头
     第四个参数:completionHandler 下载完成回调
        filePath:真实路径 == 第三个参数的返回值
        error:错误信息
     */
    NSURLSessionDownloadTask *downlaodTask = [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];

        NSURL *fileUrl = [NSURL fileURLWithPath:fullpath];

        NSLog(@"%@\n%@",targetPath,fullpath);
        return fileUrl;
    } completionHandler:^(NSURLResponse * _Nonnull response, NSURL * _Nullable filePath, NSError * _Nullable error) {

        NSLog(@"%@",filePath);
    }];

    //3.执行Task
    [downlaodTask resume];

文件上传

-(void)uplaod
{
    //1.创建会话管理者
    AFHTTPSessionManager *manager = [AFHTTPSessionManager manager];

    NSDictionary *dictM = @{
                            @"username":@"123"
                            };

    //2.上传文件
    /*
     第一个参数:请求路径
     第二个参数:非文件参数,以字典传递
     第三个参数:constructingBodyWithBlock
        拼接数据 文件参数
     第四个参数:progress 进度回调
     第五个参数:success 成功回调
     第六个参数:failure 失败回调
     */
    [manager POST:@"http://120.25.226.186:32812/upload" parameters:dictM constructingBodyWithBlock:^(id<AFMultipartFormData>  _Nonnull formData) {

        UIImage *image = [UIImage imageNamed:@"Snip20160118_860"];
        NSData *imageData = UIImagePNGRepresentation(image);

        /*
         第一个参数:要上传的文件的二进制数据
         第二个参数:参数名称是规定的 此处为file
         第三个参数:保存的名称
         第四个参数:mimeType 文件的数据类型
         */
        [formData appendPartWithFileData:imageData name:@"file" fileName:@"12345.png" mimeType:@"image/png"];

    } 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);
    }];
}
-(void)uplaod2
{
    //1.创建会话管理者
    AFHTTPSessionManager *manager = [AFHTTPSessionManager manager];

    NSDictionary *dictM = @{
                            @"username":@"123"
                            };

    //2.上传文件
    /*
     第一个参数:请求路径
     第二个参数:非文件参数,以字典传递
     第三个参数:constructingBodyWithBlock
     拼接数据 文件参数
     第四个参数:progress 进度回调
     第五个参数:success 成功回调
     第六个参数:failure 失败回调
     */
    [manager POST:@"http://120.25.226.186:32812/upload" parameters:dictM constructingBodyWithBlock:^(id<AFMultipartFormData>  _Nonnull formData) {

        NSURL *fileUrl = [NSURL fileURLWithPath:@"/Users/xiaomage/Desktop/Snip20160118_860.png"];

        /*
         第一个参数:文件的URL路径
         第二个参数:参数名称是规定的 此处为file
         第三个参数:保存的名称
         第四个参数:mimeType 文件的数据类型
         */
        //[formData appendPartWithFileURL:fileUrl name:@"file" fileName:@"1.png" mimeType:@"image/png" error:nil];

        //简便方法 会将Snip20160118_860.png作为文件名字
        [formData appendPartWithFileURL:fileUrl 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);
    }];
}

 

iOS网络-AFNetworking基本使用,文件下载,上传

标签:

原文地址:http://www.cnblogs.com/liugengqun/p/5140846.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!