为大家分享一个IOS处理网络请求,网络上传,网络下载等功能全面的一个第三方框架-AFNetworking,这是一个使用非常方便的网络框架.

最新的版本是基于NSURLSession,原来的NSURLConnectionOperation在此已经移除.

git链接请点击此处

简介

翻译:AFNetworking是适用于IOS和MacOS的一个轻量级的网络库.它搭建于URL加载系统的框架之上,扩展了有效的高级网络提取并内置了Cocoa.它提供了设计优秀的模块化体系,方便使用的丰富的API.

最大的特点是每天有惊人数量的社区开发者在为AFNetworking做出贡献. AFNetworking在一些最受欢迎的IPhone,IPad,Mac上的APP都有使用它.

选择AFNetworking在您的下一个项目中,或者移植到你现存的项目上---你将会很乐意于使用它!

大体架构

网络管理类
请求
响应

AFHTTPSessionManager是AFURLSessionManager的子类,一般推荐使用AFHTTPSessionManager.

在这里我只为大家介绍下封装成工具类的操作,以GET网络请求为例,其他的方法是类似使用的,在项目中大量的使用,这是非常必要的.

创建.h文件
#import <Foundation/Foundation.h>
//因为我是使用pods导入的.所以这里是导入库文件的形式
#import <AFNetworking.h> @interface NetTools : AFHTTPSessionManager +(instancetype)shareNetTools; -(void)GETURLString:(NSString *)URLString andSuccessBlock:(void(^)(id success))successBlock andErrorBlock:(void(^)(NSError *error))errorBlock; @end

创建.m文件

#import "NetTools.h"

@implementation NetTools
//设计成单例
+(instancetype)shareNetTools
{
static NetTools* instance; static dispatch_once_t onceToken;
dispatch_once(&onceToken, ^{ //设置baseURL.
NSURL *url = [NSURL URLWithString:@"http://c.m.163.com/nc/"];
instance = [[NetTools alloc] initWithBaseURL:url]; //解决反序列问题
instance.responseSerializer.acceptableContentTypes = [NSSet setWithObjects:@"application/json", @"text/json", @"text/javascript", @"text/html", nil];
}); return instance;
}
//这里是是get请求方法演示,其他的方法类似.
-(void)GETURLString:(NSString *)URLString andSuccessBlock:(void(^)(id success))successBlock andErrorBlock:(void(^)(NSError *error))errorBlock
{
//NSLog(@"当前的请求地址:%@", URLString); [self GET:URLString parameters:nil progress:nil success:^(NSURLSessionDataTask * _Nonnull task, id _Nullable responseObject) {
if (successBlock) {
successBlock(responseObject);
}
NSLog(@"请求成功^");
} failure:^(NSURLSessionDataTask * _Nullable task, NSError * _Nonnull error) { if (errorBlock) {
NSLog(@"下载sh%@", error);
errorBlock(error);
}
}];
} @end
05-10 22:53