AFN(向网络发送请求---文件上传)

基本使用

GET请求

1.创建会话管理者
AFHTTPSessionManager *manager = [AFHTTPSessionManager manager];
    NSDictionary *paramDict = @{
        
    };
2.发送GET请求

/*
第一个参数:请求路径(不包含参数),NSString类型
第二个参数:字典(发送给服务器的数据~参数)
第三个参数:progress 进度回调
第四个参数:success 成功回调
task:请求任务
responseObject:响应体信息(JSON—>OC对象)(已经转换完了)
第五个参数:failure 失败回调
task:请求任务
error:错误信息
响应头:task.response(请求任务中有响应头)
*/

 [manager GET:@"" parameters:paramDict progress:nil success:^(NSURLSessionDataTask * _Nonnull task, id  _Nullable responseObject) {
        
    } failure:^(NSURLSessionDataTask * _Nullable task, NSError * _Nonnull error) {
        <#code#>
    }];

POST请求

1.创建会话管理者
AFHTTPSessionManager *manager = [AFHTTPSessionManager manager];
    NSDictionary *paramDict = @{
        
    };
2.发送POST请求

/*
第一个参数:请求路径(不包含参数),NSString类型
第二个参数:字典(发送给服务器的数据~参数)
第三个参数:progress 进度回调
第四个参数:success 成功回调
task:请求任务
responseObject:响应体信息(JSON—>OC对象)(已经转换完了)
第五个参数:failure 失败回调
task:请求任务
error:错误信息
响应头:task.response(请求任务中有响应头)
*/

 [manager POST:@"" parameters:paramDict progress:nil success:^(NSURLSessionDataTask * _Nonnull task, id  _Nullable responseObject) {
        
    } failure:^(NSURLSessionDataTask * _Nullable task, NSError * _Nonnull error) {
        <#code#>
    }];

文件上传

1.创建会话管理者
AFHTTPSessionManager *manager = [AFHTTPSessionManager manager];
2.发送post请求上传文件

/*
第一个参数:请求路径
第二个参数:字典(非文件参数)(可以不传)
第三个参数:constructingBodyWithBlock 处理要上传的文件数据
第四个参数:progress 进度回调
第五个参数:success 成功回调
task:请求任务
responseObject:响应体信息
第六个参数:failure 失败回调
task:请求任务
error:错误信息
*/

[manager POST:@"" parameters:nil constructingBodyWithBlock:^(id<AFMultipartFormData>  _Nonnull formData) {
        //使用formData来拼接数据
/** 第一种方法 **/
        UIImage *image = [UIImage imageNamed:@""];
        NSData *imageData = UIImagePNGRepresentation(image);
        /*
         第一个参数:二进制数据 要上传的文件参数(图片为例)
         第二个参数:服务器规定的(看文档)
         第三个参数:该文件上传到服务器以什么名称保存
         第四个参数:mimeType(类型,可以上百度查找)
         */
        [formData appendPartWithFileData:imageData name:@"file" fileName:@"xxxx.png" mimeType:@"image/png"];
/** 第二种方法 **/
        /*
        第一个参数:传递一个URL(可以直接将文件路径转换成URL)
        第二个参数:服务器规定的(看文档)
        第三个参数:该文件上传到服务器以什么名称保存
        第四个参数:mimeType(类型,可以上百度查找)
        第五个参数:错误信息
        */
        [formData appendPartWithFileURL:[NSURL fileURLWithPath:@""] name:@"file" fileName:@"xxxx.png" mimeType:@"image/png" error:nil];
/** 第三种方法 **/
        /*
        第一个参数:传递一个URL(可以直接将文件路径转换成URL)
        第二个参数:服务器规定的(看文档)
        第三个参数:错误信息
         */
        [formData appendPartWithFileURL:[NSURL fileURLWithPath:@""] name:@"file" error:nil];
    } progress:^(NSProgress * _Nonnull uploadProgress) {
        //进度
        NSLog(@"%f" , 1.0 * uploadProgress.completedUnitCount / uploadProgress.totalUnitCount);
    } success:^(NSURLSessionDataTask * _Nonnull task, id  _Nullable responseObject) {
        <#code#>
    } failure:^(NSURLSessionDataTask * _Nullable task, NSError * _Nonnull error) {
        <#code#>
    }];

小技巧

  • 当我们在开发的时候,我们可能会有很多个控制器,这些个控制器都需要发送网络请求,这样我们就需要都用到AFN,我们难到要每一个控制器都将框架拖进去?当我们不使用AFN框架了,那个时候会更加麻烦,我们可以这样做
我们封装一个工具类(networkTool),之后这个工具类依赖于AFN框架,之后使用工具类发送请求

在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

iOS开发疯狂者

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值