IOS框架学习之AFN
2018-05-24 本文已影响0人
最强的小强
- 首先利用 CocoaPods 把框架AFN导入到项目中。
- 然后在ViewController里面导入<AFNetworking.h>, http请求记得配置 APP Transport。
- 然后就可以具体实现了:
#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);
}];
}