LupinusHTTP 1.0.1

LupinusHTTP 1.0.1

测试已测试
语言语言 Obj-CObjective C
许可 MIT
发布最后发布2015年9月

azuakuraru维护。



Lupinus

LupinusHTTP 是一个 HTTP 网络库,它封装了 NSURLSession

功能

  • 小巧,简单
  • 基于块的响应方法。

安装

使用方法

LupinusHTTP 请求步骤非常简单。

  1. 通过 LupinusHTTP 方法创建 LupinusHTTPRequest
    • HTTP 方法、URL、参数和(post body)。
  2. 使用 responseJSONresponseString 方法接收响应。

GET 请求

示例:向 http://httpbin.org/get?key=value 发起 GET 请求

LupinusHTTPRequest *httpRequest = [LupinusHTTP request:LupinusMethodGET URL:@"http://httpbin.org/get" query:@{
    @"key" : @"value"
}];
[httpRequest responseJSON:^(NSURLRequest *request, NSURLResponse *response, id JSON, NSError *error) {
    NSLog(@"JSON = %@", JSON);
}];

将响应作为 JSON 获取

总是触发使用的完整 response* 方法在主线程。

LupinusHTTPRequest *httpRequest = [LupinusHTTP request:LupinusMethodGET URL:@"http://httpbin.org/get"];
[httpRequest responseJSON:^(NSURLRequest *request, NSURLResponse *response, id JSON, NSError *error) {
    NSLog(@"JSON = %@", JSON);// => JSON Object(NSDictionary or NSArray)
}];

将响应作为字符串获取

LupinusHTTPRequest *httpRequest = [LupinusHTTP request:LupinusMethodGET URL:@"http://httpbin.org/get"];
[httpRequest responseString:^(NSURLRequest *request, NSURLResponse *response, NSString *string, NSError *error) {
    NSLog(@"string = %@", string);// => NSString
}];

将响应作为原始数据获取

LupinusHTTPRequest *httpRequest = [LupinusHTTP request:LupinusMethodGET URL:@"http://httpbin.org/get"];
[httpRequest responseRawData:^(NSURLRequest *request, NSURLResponse *response, NSData *data, NSError *error) {
    // data
}];

POST 请求

带有主体的 POST 请求

e.g) http://httpbin.org/post?key=value

body
    [1,2,3]
[LupinusHTTP request:LupinusMethodPOST URL:@"http://httpbin.org/post" query:@{
    @"key" : @"value"
} body:@[@1, @2, @3]];
[httpRequest responseJSON:^(NSURLRequest *request, NSURLResponse *response, id JSON, NSError *error) {
    NSLog(@"JSON = %@", JSON);// => JSON Object(NSDictionary or NSArray)
}];

常见行为 - response.statusCode >= 400

当 response.statusCode >= 400 时,将请求视为失败,并通过状态码填充 error

LupinusHTTPRequest *httpRequest = [LupinusHTTP request:LupinusMethodGET URL:@"http://httpbin.org/status/403"];
// response status code is 403
[httpRequest responseJSON:^(NSURLRequest *request, NSURLResponse *response, id JSON, NSError *error) {
    // error is not nil
    if(error){
        NSLog(@"%@", error);
    }
}];

使用自定义 NSURLSession

您可以使用修改过的会话配置创建一个新的会话。

// default : [NSURLSessionConfiguration defaultSessionConfiguration]
+ (instancetype)httpWithSessionConfiguration:(NSURLSessionConfiguration *) sessionConfiguration;

取消请求

您可以通过 LupinusHTTPRequest#cancel 来取消请求。

LupinusHTTPRequest *httpRequest = [LupinusHTTP request:LupinusMethodGET URL:@"http://httpbin.org/get"];
[httpRequest responseJSON:^(NSURLRequest *request, NSURLResponse *response, id JSON, NSError *error) {
  // this callback doens't call!
}];
// cancel request
[httpRequest cancel];

LupinusHTTP 请求流程

LupinusHTTP 请求流程的设计。

// Create NSURLSession and NSURLRequest.
LupinusHTTPRequest *httpRequest = [LupinusHTTP request:LupinusMethodGET URL:@"http://httpbin.org/get"];
// already started HTTP request
// ...
// you can register complete handler
// Lupinus add this handler to `queue`
[httpRequest responseJSON:^(NSURLRequest *request, NSURLResponse *response, id JSON, NSError *error) {
    NSLog(@"JSON = %@", JSON);// => JSON Object(NSDictionary or NSArray)
}];

// ....
// Get HTTP response.
// Lupinus dispatch_resume(self.queue); => callback the complete handlers.

常见问题解答 (FAQ)

LupinusHTTP 是否与 Background Fetch 一起工作?

否。

LupinusHTTP 不与 Background Fetch 一起工作。

但是,欢迎您的拉取请求!

贡献

  1. 分叉它!
  2. 创建你的功能分支: git checkout -b my-new-feature
  3. 提交你的更改: git commit -am '添加一些功能'
  4. 推送到分支: git push origin my-new-feature
  5. 提交拉取请求 :D

许可证

LupinusHTTP采用MIT许可证。有关更多信息,请参阅LICENSE文件。

致谢

LupinusHTTP受以下项目的启发:[Alamofire](https://github.com/Alamofire/Alamofire)、[AFNetworking](https://github.com/AFNetworking/AFNetworking)、[TacoShell](https://github.com/BurritoKit/TacoShell)。

感谢

照片由 Tatu Väyrynen 提供