使用CocoaPods可以很方便地引入AYHttp。Podfile添加AYHttp的依赖。
pod "AYHttp"
AYHttp是基于AFNetworking的网络请求框架。使用Promise语法进行操作,可以令代码更清晰和方便。同时,AYHttp简化了网络请求,使用起来非常简洁。
[AYHttpClient executeRequest:AYGETRequest(@"https://api.github.com/search/repositories").withQueryParam(@"q", @"AYHttp")]
.then(^(AYHttpResponse *response){
//请求成功
NSDictionary *result = response.responseJson;
//其它业务
}).catch(^(NSError *error){
NSLog(error.localizedDescription);
});
Restful风格的api常常使用URL param,AYHttp对此类URL做了处理。
[AYHttpClient executeRequest:AYGETRequest(@"https://api.douban.com/v2/book/{bookID}").withPathParam(@"bookID", @"1220562")]
.then(^(AYHttpResponse *response){
//请求成功
NSDictionary *result = response.responseJson;
//其它业务
}).catch(^(NSError *error){
NSLog(error.localizedDescription);
});
AYHttp会自动将url中的{xxxx}
替换成params中的对应key的参数值,同时将params对应的key移除。
NSData *data = [NSData dataWithContentsOfFile:[[NSBundle mainBundle] pathForResource:@"aaa" ofType:@"zip"]];
AYHttpRequest *uploadRequest = AYPOSTRequest(@"http://10.0.1.2:8080/MDDisk/file").withBodyParam(@"file", [AYHttpFileParam paramWithData:data andName:@"aaa.zip"]);
[uploadRequest setUploadProgress:^(NSProgress * _Nonnull progress) {
///上传进度
NSLog(@"%@", progress);
}];
[AYHttpClient executeRequest:uploadRequest]
.then(^(AYHttpResponse *response){
//上传成功
NSDictionary *result = response.responseJson;
//其它业务
}).catch(^(NSError *error){
//上传失败
NSLog(error.localizedDescription);
});
文件下载分两种,分别是普通下载和断点下载。
使用executeRequest。下载成功后,在AYHttpResponse的responseData
属性中获得数据。
使用downloadRequest。下载成功后,在AYHttpResponse的responseFile
属性中获得文件。
AYHttpRequest *downloadReq = AYGETRequest(@"https://cache.ruby-lang.org/pub/ruby/2.3/ruby-2.3.1.tar.gz");
[downloadReq setDownloadProgress:^(NSProgress * _Nonnull progress) {
//下载进度
NSLog(@"%@", progress);
}];
[AYHttpClient downloadRequest:downloadReq].then(^(AYHttpResponse *response){
//下载成功
NSLog(@"%@", response.responseFile);
}).catch(^(NSError *error){
//下载失败
NSLog(error.localizedDescription);
});
- 暂停下载,使用then可以获取暂停后生成的
暂存数据文件
。
[AYHttpClient suspendDownloadRequest:downloadReq].then(^(AYFile *config){
NSLog(@"%@", config);
});
- 断点续传,使用暂停下载时生成的
暂存数据文件
,可以继续下载。
AYHttpRequest *request = nil;
[AYHttpClient resumeDownloadRequest:&request withConfig:config].then(^(AYHttpResponse *response){
//下载成功
NSLog(@"%@", response.responseFile);
}).catch(^(NSError *error){
//下载失败
NSLog(error.localizedDescription);
});
[request setDownloadProgress:^(NSProgress * _Nonnull progress) {
//下载进度
NSLog(@"%@", progress);
}];
AYHttp is available under the MIT license. See the LICENSE file for more info.