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

发送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);
    }];
}
时间: 2024-12-12 16:52:15

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

关于Java网络爬虫---模拟txt文件上传操作。

业务需求是这样的,公司400业务中客户使用的,400电话号码,可以添加多个目的码你可以理解为转接号码: 这些配置的目的码我们会在网关服务器上配置成白名单,既拥有某些权限.先提出的要求是先添加或者变动目的码要及时同步到网关. 场景: 1.我们的网关服务器接受的白名单(目的码)是已txt文件上传的,数据按照制定的格式保存在txt里面. 2.利用Java网络爬虫模拟txt文件上传.------2018-4-7现在不写了,代码在公司电脑上明天总结一下在写. 原文地址:https://www.cnblog

iOS NSURLSession 实现网络请求-文件下载-上传-后台下载

*  会话NSURLSession NSURLConnection通过全局状态来管理cookies, 认证信息等公共资源, 如果两个连接需要使用不同的资源配置情况时就无法解决, 这个问题在NSURLSession可以解决, NSURLSession同时对应着多个连接, 会话通过工厂方法来创建, 同一个会话中使用相同的状态信息, NSURLSession支持进程三种会话: 1. defaultSessionConfiguration : 进程内会话 (默认会话), 用来硬盘来缓存数据. 2. ep

[iOS 多线程 &amp; 网络 - 2.11] - ASI框架上传文件

A.ASI的上传功能基本使用 1.实现步骤 (1)创建请求 使用ASIFormDataRequest (2)设置上传文件路径 (3)发送请求 2.上传相册相片 UIImagePickerController用来选择图片 设置图片来源,可以选择相册 使用代理 UIImagePickerControllerDelegate方法,选择完成之后取得相片 1 // 2 // ViewController.m 3 // ASIUploadDemo 4 // 5 // Created by hellovoid

[iOS 多线程 &amp; 网络 - 2.5] - 小文件上传

A.文件上传 思路: 发送文件数据给服务器 使用post请求 必须手动设置请求头: 内容大小Content-Length & 内容类型 Content-Type 请求体:文件数据 文件上传的格式要求十分严格,必须严格遵守 由于是一次性加载文件到内存上传,所以只能用于小文件上传 B.实现 1.设置POST请求 (1)使用POST请求方法 (2)设置请求头 设置内容长度.内容类型.分割线 (3)设置请求体 NSMutableData *body = [NSMutableData data]; 分割线

[iOS 多线程 &amp; 网络 - 2.6] - 使用POST上传JSON数据 &amp; 多值参数

A.上传JSON 1.思路: 必须使用POST方法才能上传大量JSON数据 设置请求头:设置Content-Type 设置请求体,JSON实际相当于字典,可以用NSDictionary NSJSONSerialization把字典数据转换成JSON二进制 2.实现 1 // 2 // ViewController.m 3 // PostJsonDemo 4 // 5 // Created by hellovoidworld on 15/1/28. 6 // Copyright (c) 2015年

iOS多线程与网络开发之小文件上传

郝萌主倾心贡献,尊重作者的劳动成果,请勿转载. 假设文章对您有所帮助,欢迎给作者捐赠,支持郝萌主,捐赠数额任意,重在心意^_^ 我要捐赠: 点击捐赠 Cocos2d-X源代码下载:点我传送 游戏官方下载:http://dwz.cn/RwTjl 游戏视频预览:http://dwz.cn/RzHHd 游戏开发博客:http://dwz.cn/RzJzI 游戏源代码传送:http://dwz.cn/Nret1 A.文件上传 思路: 发送文件数据给server 使用post请求 必须手动设置请求头: 内

iOS多线程与网络开发之使用POST上传JSON数据 &amp; 多值参数

郝萌主倾心贡献,尊重作者的劳动成果,请勿转载. 如果文章对您有所帮助,欢迎给作者捐赠,支持郝萌主,捐赠数额随意,重在心意^_^ 我要捐赠: 点击捐赠 Cocos2d-X源码下载:点我传送 游戏官方下载:http://dwz.cn/RwTjl 游戏视频预览:http://dwz.cn/RzHHd 游戏开发博客:http://dwz.cn/RzJzI 游戏源码传送:http://dwz.cn/Nret1 A.上传JSON 1.思路: 必须使用POST方法才能上传大量JSON数据 设置请求头:设置Co

Xcode5 + phoneGap2.9搭建ios开发环境-配置-测试-归档上传/phoneG...

前言: 小弟是做JAVA/Android的第一次搞这个ios,公司有mobile项目是使用phoneGap开发的,需要开发ios版本.什么都不会只能一点一点琢磨了……大神越过…… 原文链接:http://my.oschina.net/jgy/blog/168745 下载phoneGap2.9和安装Xcode5(目前最新版) 使用phoneGap/create命令创建项目 ? 1 ./create /Users/jiagaoyang/Documents/Workspace/Xcode/iphone

iOS实现视频和图片的上传

关于iOS如何实现视频和图片的上传, 我们先理清下思路 思路: #1. 如何获取图片? #2. 如何获取视频? #3. 如何把图片存到缓存路径中? #4. 如何把视频存到缓存路径中? #5. 如何上传? 接下来, 我们按照上面的思路一步一步实现 首先我们新建一个类, 用来储存每一个要上传的文件uploadModel.h #import <Foundation/Foundation.h> @interface uploadModel : NSObject @property (nonatomic