ASJNetworking
自从掌握了制作网络请求和玩转 JSON 的技巧后,我一直觉得处理制作它们的代码很繁琐,尤其是 POST 请求。我在网上找到了代码示例,但总是找不到合适的,要么到处粘贴代码示例使代码变得一团糟,要么使用第三方解决方案。我希望自己能有连贯性,于是创建了这个基于 NSURLSession
的基础网络类,以满足我所有的简单需求。
ASJNetworking
可以进行以下类型的 HTTP 请求
- GET
- HEAD
- POST
- PUT
- PATCH
- DELETE
安装
CocoaPods 是安装此库的首选方式。将此命令添加到您的 Podfile
pod 'ASJNetworking'
如果您更喜欢经典方式,只需将 ASJNetworking
文件夹 (.h 和 .m 文件) 复制到您的项目中。
使用
制作请求很简单。您首先需要创建 ASJNetworking
的一个实例,然后调用您希望发起的请求的相应方法。为所有类型的 HTTP 请求提供了方法。例如,如果您想发起一个 GET 请求
ASJNetworking *getRequest = [[ASJNetworking alloc] initWithBaseUrl:@"http://example.com"];
[getRequest GET:@"method_name" parameters:params completion:^(id response, NSString *responseString, NSError *error) {
// handle response
}];
对于多部分 POST 方法,您需要传入一个 ASJImageItems
数组。提供了一个可选的进度块,这样您就可以跟踪上传进度。
ASJImageItem *imageItem = [ASJImageItem imageItemWithName:@"image_name" fileName:@"image.jpg" image:[UIImage imageNamed:@"image"]];
ASJNetworking *postRequest = [[ASJNetworking alloc] initWithBaseUrl:@"http://example.com"];
[postRequest POST:@"method_name" parameters:params imageItems:@[anImageItem] progress:^(CGFloat progressPc) {
// handle progress
} completion:^(id response, NSString *responseString, NSError *error) {
// handle response
}];
待办事项
测试DELETE请求。测试HEAD请求。检查图像项目中的空值。增加网络活动指示器支持。向PUT请求中添加多部分数据。- 如何在头部发送参数。
- 如何将类别应用于设置图像视图等。
- 可以实现批量请求的功能。
致谢
- AFNetworking及其贡献者。
- Abhijit Kayande对Ctrl+Cmd+Spc的贡献。
- 使用NSURLSession发送POST请求
- 有没有办法将参数的NSDictionary附加到NSURLRequest,而不是手动生成字符串?
- POST (HTTP):维基百科
- RFC 7578:从表单返回值:multipart/form-data
- SVHTTPRequest用于请求认证
许可协议
ASJNetworking
在MIT许可下可用。有关更多信息,请参阅LICENSE文件。