基本使用
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框架了,那个时候会更加麻烦,我们可以这样做