Latest 2.0.2
Homepage https://github.com/alan-yeh/AYHttp
License MIT
Platforms ios 8.0
Dependencies AFNetworking, AYPromise, AYFile, AYQuery, AYCategory
Authors

CI Status
Version
License
Platform

引用

  使用CocoaPods可以很方便地引入AYHttp。Podfile添加AYHttp的依赖。

pod "AYHttp"

简介

  AYHttp是基于AFNetworking的网络请求框架。使用Promise语法进行操作,可以令代码更清晰和方便。同时,AYHttp简化了网络请求,使用起来非常简洁。

用例

GET请求

    [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);
    });

URL Param

  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);
    }];

License

AYHttp is available under the MIT license. See the LICENSE file for more info.

Latest podspec

{
    "name": "AYHttp",
    "version": "2.0.2",
    "summary": "Promise style HTTP client base on AFNetworking.",
    "homepage": "https://github.com/alan-yeh/AYHttp",
    "license": {
        "type": "MIT",
        "file": "LICENSE"
    },
    "authors": {
        "Alan Yeh": "[email protected]"
    },
    "source": {
        "git": "https://github.com/alan-yeh/AYHttp.git",
        "tag": "2.0.2"
    },
    "platforms": {
        "ios": "8.0"
    },
    "source_files": "AYHttp/Classes/**/*",
    "public_header_files": "AYHttp/Classes/*.h",
    "dependencies": {
        "AFNetworking": [],
        "AYPromise": [],
        "AYFile": [],
        "AYQuery": [],
        "AYCategory": []
    }
}

Pin It on Pinterest

Share This