您的位置:首页 > 其它

AFNetworking3.0使用

2016-01-04 16:35 363 查看
其实大量参考了其他文章,但是这篇博客是我写的。

编辑于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.下面几个接口已经被废弃:

AFURLConnectionOperation
AFHTTPRequestOperation

AFHTTPRequestOperationManager

3.0的核心类为AFHTTPSessionManager.

3.有一些UI相关的类已经被重构过。

UIImageView+AFNetworking
UIWebView+AFNetworking
UIButton+AFNetworking

图片缓存的方法包括在内。

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;

[/code]

好了,上面的内容只涉及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) {


}];

[/code]

注意这里的formData是可变的,所以可以添加多组数据。是不是很方便?

不过这个最后一个参数mimeType 表示了上传的类型,如果你不知道这个类型怎么用字符串表示的话,请前往下面的网址参考:

http://www.iana.org/assignments/media-types/media-types.xhtml

我相信你不会太晕的。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: