您的位置首页百科问答

iOS开发 AFNetworking V3.0+ 简单封装和使用

iOS开发 AFNetworking V3.0+ 简单封装和使用

的有关信息介绍如下:

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项。代码如下:

NSAppTransportSecurity

NSAllowsArbitraryLoads

开始使用

1、#import "AFHTTPClient.h"

2、使用[AFHTTPClient shareInstance]初始化并开始POST请求:

[AFHTTPClient shareInstance] startRequestMethod: parameters: url: success:

3、加载网络图片:初始化UIImageView后调用:

setImageWithURL: placeholderImage:

完成

如果您喜欢,请按投票;如果有疑问,欢迎一起探讨。