iOS开发 AFNetworking V3.0+ 简单封装和使用
的有关信息介绍如下:对AFNetworking V3.0+(3.0及以上版本) 进行简单封装和使用。AFNetworking是一个非常方便的iOS网络请求库,可以轻松实现网络请求。这里只实现AFNetworking框架的一丁点功能,不过也够开发一个app了。可以实现的请求方式:POST / GET / PUT / PATCH / DELETE;也可以加载网络图片等。可回调成功和失败结果。封装类在github上的AFNetworkingDemo上,里面的代码可能随着AFNetworking更新而更新,可下载直接使用。
创建工程项目和视图控制器
1、创建一个Sing View Application工程项目;
2、为项目命名,生成工程文件。
下载AFNetworking最新库
目前在github上面,最新版本3.1.0,pod 'AFNetworking', '~> 3.1.0'。下载之后把AFNetworking文件下拷贝过来。如果需要其他工具可以同时把UIKit+AFNetworking文件夹也拷贝过来。(我是一起拷贝过来的,因为需要加载网络图片)。
引用AFNetworking及声明
1、#import "AFNetworking.h"
2、#import "UIKit+AFNetworking.h"
3、列枚举
新建AFHTTPClient类
新建类,继承于NSObject,命名为AFHTTPClient。
使用GCD单例对类进行初始化
1、声明单例方法:+ (instancetype)shareInstance;
2、实现初始化单例方法,如下:
+ (instancetype)shareInstance
{
static AFHTTPClient *singleton = nil;
static dispatch_once_t onceToken;
dispatch_once(&onceToken, ^{
singleton = [[AFHTTPClient alloc] init];
});
return singleton;
}
声明类的实例方法
请求方式 POST / GET / PUT / PATCH / DELETE
请求参数 --支持NSArray, NSDictionary, NSSet这三种数据结构
例如:
- (void)startRequestMethod:(RequestMethod)method
parameters:(id)parameters
url:(NSString *)url
success:(void (^)(id responseObject))success;
实现类的实例方法1
1、初始化:
AFHTTPSessionManager *manager = [AFHTTPSessionManager manager];
2、设置请求超时时间:
manager.requestSerializer.timeoutInterval = 30.0f;
2、设置允许接收返回数据类型:
manager.responseSerializer.acceptableContentTypes = [NSSet setWithObjects:@"application/json", @"text/html", @"text/json", @"text/javascript", nil];
实现类的实例方法2
AFHTTPSessionManager开始请求示例:使用POST方式
- (NSURLSessionDataTask *)POST:(NSString *)URLString
parameters:(id)parameters
progress:(void (^)(NSProgress * _Nonnull))uploadProgress
success:(void (^)(NSURLSessionDataTask * _Nonnull, id _Nullable))success
failure:(void (^)(NSURLSessionDataTask * _Nullable, NSError * _Nonnull))failure
实现请求失败回调方法
- (void)requestFailed:(NSError *)error
{
NSLog(@"--------------\n%ld %@",(long)error.code, error.debugDescription);
switch (error.code) {
case AFNetworkErrorType_NoNetwork :
NSLog(@"网络链接失败,请检查网络。");
break;
case AFNetworkErrorType_TimedOut :
NSLog(@"访问服务器超时,请检查网络。");
break;
case AFNetworkErrorType_3840Failed :
NSLog(@"服务器报错了,请稍后再访问。");
break;
default:
break;
}
}
支持iOS9、Xcode7的http请求
找到Info.plist文件,右键Open As-Source Code。添加NSAppTransportSecurity项。代码如下:
开始使用
1、#import "AFHTTPClient.h"
2、使用[AFHTTPClient shareInstance]初始化并开始POST请求:
[AFHTTPClient shareInstance] startRequestMethod: parameters: url: success:
3、加载网络图片:初始化UIImageView后调用:
setImageWithURL: placeholderImage:
完成
如果您喜欢,请按投票;如果有疑问,欢迎一起探讨。