iOS开发对AFNetworking3.0的二次封装
来源:互联网 发布:网络同步课堂 编辑:程序博客网 时间:2024/06/17 02:34
①封装
创建一个新的类,我暂且命名为HttpRequest
.h文件
#import <Foundation/Foundation.h>@class AFNetworking;@interface HttpRequest : NSObject+ (HttpRequest *)sharedInstance;- (void)GET:(NSString *)URLString dict:(id)dict succeed:(void (^)(id data))succeed failure:(void (^)(NSError *error))failure;- (void)POST:(NSString *)URLString dict:(id)dict succeed:(void (^)(id data))succeed failure:(void (^)(NSError *error))failure;@end
.m文件
#import "HttpRequest.h"#import "AFNetworking.h"@implementation HttpRequest/** * 创建网络请求类的单例 */static HttpRequest *httpRequest = nil;+ (HttpRequest *)sharedInstance{ static dispatch_once_t onceToken; dispatch_once(&onceToken, ^{ if (httpRequest == nil) { httpRequest = [[self alloc] init]; } }); return httpRequest;}+(instancetype)allocWithZone:(struct _NSZone *)zone{ static dispatch_once_t onceToken; dispatch_once(&onceToken, ^{ if (httpRequest == nil) { httpRequest = [super allocWithZone:zone]; } }); return httpRequest;}- (instancetype)copyWithZone:(NSZone *)zone{ return httpRequest;}/** * 封装AFN的GET请求 * * @param URLString 网络请求地址 * @param dict 参数(可以是字典或者nil) * @param succeed 成功后执行success block * @param failure 失败后执行failure block */- (void)GET:(NSString *)URLString dict:(id)dict succeed:(void (^)(id data))succeed failure:(void (^)(NSError *error))failure{ //创建网络请求管理对象 AFHTTPSessionManager *manager = [AFHTTPSessionManager manager]; //申明返回的结果是json类型 manager.responseSerializer = [AFJSONResponseSerializer serializer]; //申明请求的数据是json类型 manager.requestSerializer = [AFJSONRequestSerializer serializer]; //如果报接受类型不一致请替换一致text/html或别的 manager.responseSerializer.acceptableContentTypes = [NSSet setWithObjects:@"text/html", nil]; //发送网络请求(请求方式为GET) [manager GET:URLString parameters:dict progress:^(NSProgress * _Nonnull downloadProgress) { } success:^(NSURLSessionDataTask * _Nonnull task, id _Nullable responseObject) { succeed(responseObject); } failure:^(NSURLSessionDataTask * _Nullable task, NSError * _Nonnull error) { failure(error); }];}/** * 封装AFN的POST请求 * * @param URLString 网络请求地址 * @param dict 参数(可以是字典或者nil) * @param succeed 成功后执行success block * @param failure 失败后执行failure block */- (void)POST:(NSString *)URLString dict:(id)dict succeed:(void (^)(id data))succeed failure:(void (^)(NSError *error))failure{ //创建网络请求管理对象 AFHTTPSessionManager *manager = [AFHTTPSessionManager manager]; //申明返回的结果是json类型 manager.responseSerializer = [AFJSONResponseSerializer serializer]; //申明请求的数据是json类型 manager.requestSerializer = [AFJSONRequestSerializer serializer]; //如果报接受类型不一致请替换一致text/html或别的 manager.responseSerializer.acceptableContentTypes = [NSSet setWithObjects:@"text/html", nil]; //发送网络请求(请求方式为POST) [manager POST:URLString parameters:dict progress:^(NSProgress * _Nonnull uploadProgress) { } success:^(NSURLSessionDataTask * _Nonnull task, id _Nullable responseObject) { succeed(responseObject); } failure:^(NSURLSessionDataTask * _Nullable task, NSError * _Nonnull error) { failure(error); }];}@end
②使用
调用时代码很少,很方便使用(也可以把调用的代码写成代码片段,提高效率)NSDictionary *dict = [NSDictionary dictionaryWithObjectsAndKeys:<#(nonnull id), ...#>, nil];HttpRequest *httpRequest = [HttpRequest sharedInstance];[httpRequest GET:<#(NSString *)#> dict:dict succeed:^(id data) { NSLog(@"%@", data); } failure:^(NSError *error) { NSLog(@"%@", error);}];如果不需要传参数,就不用创建dict了,get请求那里直接写nil就行.
post跟get一样,除了把get改成post,其余地方都不用改动
4 0
- iOS开发对AFNetworking3.0的二次封装
- AFNetworking3.1 二次封装
- 基于AFNetworking3.X的二次封装及拓展
- AFNetWorking3.0的简单封装
- iOS开发:GET与POST接口网络请求以及对AFNetworking的二次封装
- 对AFN的二次封装
- 对okhttp的二次封装
- iOS开发第三方框架之AFNetworking3.0的使用
- iOS 开发 AFNetworking3.0源码解析(一:结构图/网络请求三次封装/上传下载/网络监测)
- iOS AFN的二次封装
- 基于AFNetworking3.0的网络封装
- 基于AFNetWorking3.0的简单封装
- iOS开发之AFNetworking3.0.4的使用
- android开发:对Volley进行二次封装
- AFNetworking3.0封装
- AFNetworking3.0 接口封装
- 封装AFNetworking3.0
- iOS开发 之 AFNetworking3.0使用详解
- HTTP请求报文和响应响应结构
- hdu2089 不要62(数位dp两种做法)
- 游戏服务端线程模型——无锁处理玩家请求
- java使double保留两位小数的方法
- hdu3555 Bomb(数位dp)
- iOS开发对AFNetworking3.0的二次封装
- HTTP协议 (2)了解请求报文
- hdu3652 B-number(数位dp)
- UFLDL 笔记 05 自编码训练结果展示 Visualizing a Trained Autoencoder
- mac上安装git
- HTTP消息推送原理
- PostgreSQL之Array_to_String用法
- MIPS-单周期CPU设计
- Mac OS X中配置Apache