LupinusHTTP 是一个 HTTP 网络库,它封装了 NSURLSession
。
LupinusHTTP 请求步骤非常简单。
LupinusHTTP
方法创建 LupinusHTTPRequest
。responseJSON
或 responseString
方法接收响应。示例:向 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);
}];
总是触发使用的完整 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
}];
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 时,将请求视为失败,并通过状态码填充 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);
}
}];
您可以使用修改过的会话配置创建一个新的会话。
// 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 请求流程的设计。
// 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.
否。
LupinusHTTP 不与 Background Fetch 一起工作。
NSURLSessionDownloadTask
。但是,欢迎您的拉取请求!
git checkout -b my-new-feature
git commit -am '添加一些功能'
git push origin my-new-feature
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 提供