其实大量参考了其他文章,但是这篇博客是我写的。
编辑于2016/01/04
github地址:https://github.com/AFNetworking/AFNetworking/wiki/AFNetworking-3.0-Migration-Guide#new-requirements-ios-7-mac-os-x-109-watchos-2-tvos-9--xcode-7
下面是AFNetworking的两个参考地址:
http://www.jianshu.com/p/047463a7ce9b
http://www.open-open.com/lib/view/open1436603781395.html
AFNetworking 3.0.4是目前AFNetworking的最新版。可以使用pod search AFNetworking查看最新可使用的版本.
3.0版本正式支持iOS7,Mac OS X的10.9,watch OS 2,tvOS 9和Xcode 7.适配其他版本请参考第一个文档.
AFNetworking有以下特点:
1.之前版本基于NSURLConnection的API已经全部弃用,改为使用基于NSURLSession的API。
注:NSURLConnection的api已正式被苹果弃用,虽然该API将继续运行,但将没有新功能将被添加。苹果建议所有的项目迁移到基于NSURLSession的api。
2.下面几个接口已经被废弃:
AFHTTPRequestOperationManager
3.0的核心类为AFHTTPSessionManager.
3.有一些UI相关的类已经被重构过。
图片缓存的方法包括在内。
AFNetworking3.0的方法要更加直观简洁,我都觉得基本不用再进一步封装了(之前的2.0我都会先封装一次)。简单的请求直接就是网址+参数的形式。文件上传只是增加了一个新的接口而已。
话不多说,直接看接口吧:核心类是AFHTTPSessionManager
//单例的接口
+ (instancetype)manager;
//将get与post请求用不同的方法,还是很有爱的,下面的参数无需多说了
- (nullable NSURLSessionDataTask *)POST:(NSString *)URLString
parameters:(nullable id)parameters
progress:(nullable void (^)(NSProgress *uploadProgress)) uploadProgress
success:(nullable void (^)(NSURLSessionDataTask *task, id _Nullable responseObject))success
failure:(nullable void (^)(NSURLSessionDataTask * _Nullable task, NSError *error))failure;
//注意多了一个block,这个代理可以用来添加你要上传的数据
- (nullable NSURLSessionDataTask *)POST:(NSString *)URLString
parameters:(nullable id)parameters
constructingBodyWithBlock:(nullable void (^)(id <AFMultipartFormData> formData))block
success:(nullable void (^)(NSURLSessionDataTask *task, id _Nullable responseObject))success
failure:(nullable void (^)(NSURLSessionDataTask * _Nullable task, NSError *error))failure DEPRECATED_ATTRIBUTE;
好了,上面的内容只涉及POST请求,因为其他请求的形式其实完全一样,到AFHTTPSessionManager.h文件看一眼就知道了。不过这里说一下上传文件的用法:
[manager POST:url parameters:params constructingBodyWithBlock:^(id<AFMultipartFormData> _Nonnull formData) {
//如果需要上传文件使用该方法
[formData appendPartWithFileData:data name:name fileName:fileName mimeType:@"image/jpeg"];
} progress:^(NSProgress * _Nonnull uploadProgress) {
} success:^(NSURLSessionDataTask * _Nonnull task, id _Nullable responseObject) {
} failure:^(NSURLSessionDataTask * _Nullable task, NSError * _Nonnull error) {
}];
注意这里的formData是可变的,所以可以添加多组数据。是不是很方便?
不过这个最后一个参数mimeType 表示了上传的类型,如果你不知道这个类型怎么用字符串表示的话,请前往下面的网址参考:
http://www.iana.org/assignments/media-types/media-types.xhtml
我相信你不会太晕的。