介绍
AFNetworking是iOS开发中最常用的一种网络请求三方库,但是通常使用时都会对其再封装一层来使用,可以降低代码的耦合度。
使用方法
1.GET请求
AFHTTPSessionManager *manager = [AFHTTPSessionManager manager];
manager.requestSerializer = [AFHTTPRequestSerializer serializer];
manager.responseSerializer = [AFHTTPResponseSerializer serializer];
[manager GET:apiURL parameters:dict progress:^(NSProgress * _Nonnull downloadProgress) {
//加载进度
} success:^(NSURLSessionDataTask * _Nonnull task, id _Nullable responseObject){
//请求成功
NSDictionary *resultDic;
@try
{
resultDic = [NSJSONSerialization JSONObjectWithData:responseObject options:NSJSONReadingMutableLeaves error:nil];
//然后对resultDic进行处理
}@catch (NSException * e) {
//返回的数据格式不是json
}
} failure:^(NSURLSessionDataTask * _Nullable task, NSError * _Nonnull error) {
//请求失败
}];
2.POST方法
和GET差不多,只是使用了manager的POST方法
3.上传图片到服务器
AFHTTPSessionManager *manager = [AFHTTPSessionManager manager];
manager.requestSerializer = [AFHTTPRequestSerializer serializer];
manager.responseSerializer = [AFHTTPResponseSerializer serializer];
[manager POST:apiURL parameters:nil constructingBodyWithBlock:^(id<AFMultipartFormData> _Nonnull formData) {
NSDateFormatter *formatter = [[NSDateFormatter alloc] init];
formatter.dateFormat = @"yyyy-MM-dd HH:mm:ss";
NSString *fileName = [formatter stringFromDate:[NSDate date]];
//image为你要上传到服务器的图片
if (image!=nil) {
UIImage *aImage = image;
//0.3为图片的压缩倍率
[formData appendPartWithFileData:UIImageJPEGRepresentation(aImage,0.3) name:@"res1.jpg" fileName:fileName mimeType:@"image/jpeg"];
}
} progress:^(NSProgress * _Nonnull uploadProgress) {
} success:^(NSURLSessionDataTask * _Nonnull task, id _Nullable responseObject) {
//请求成功
NSDictionary *resultDic;
@try
{
resultDic = [NSJSONSerialization JSONObjectWithData:responseObject options:NSJSONReadingMutableLeaves error:nil];
//然后对resultDic进行处理
}@catch (NSException * e) {
//返回的数据格式不是json
}
} failure:^(NSURLSessionDataTask * _Nullable task, NSError * _Nonnull error) {
//请求失败
}];
封装
1.对AFNetworking封装
创建类HttpManager
HttpManager.h
#import <Foundation/Foundation.h>
//HttpConstant是存放网络接口宏定义的.h文件
#import "HttpConstant.h"
@class UIImage;
///Block postResult
typedef void (^ResultPost)(NSString *result,NSError *error);//result:网络数据