AFNetworking 的封装<一>

由于之前不太会用简书写文章,第一次写出来的东西不规整.现在重新整理一下.
对于AFNetworking的网络请求,大家应该都不陌生.经过实际的开发和自己的总结,现分享一套比价方便实用的封装请求.当然,每个项目的网络对接各异,这里也只是做出一个样例的展示,我们还是要根据自己项目的实际情况来封装AFN方法.
.h文件

#importtypedef NS_ENUM(NSUInteger,HttpRequestType) {
HttpRequestTypeGet = 0,//get
HttpRequestTypePost//post
};
@interface GlobelRequest : NSObject
/**
*  发送get请求
*  @param URLString  请求的网址字符串
*  @param parameters 请求的参数
*  @param success    请求成功的回调
*  @param failure    请求失败的回调
*/
+ (void)getWithURLString:(NSString *)URLString parameters (id)parameters success:(void (^)(NSDictionary * responseObject))success failure:(void (^)(NSError *error))failure;
/**
*  发送post请求
*  @param URLString  请求的网址字符串
*  @param parameters 请求的参数
*  @param success    请求成功的回调
*  @param failure    请求失败的回调
*/
+ (void)postWithURLString:(NSString *)URLString parameters (id)parameters success:(void (^)(NSDictionary * responseObject))success failure:(void (^)(NSError *error))failure;
/**
*  发送网络请求---get/post 通用
*  @param URLString  请求的网址字符串
*  @param parameters  请求的参数
*  @param type        请求的类型
*  @param resultBlock 请求的结果
*/
+ (void)requestWithURLString:(NSString *)URLString parameters:(id)parameters type:(HttpRequestType)type success:(void (^)(NSDictionary * responseObject))success failure:(void (^)(NSError * error))failure;
@end

.m文件

#import "GlobelRequest.h"
#import "AFNetworking.h"
@implementation GlobelRequest
#pragma mark -- GET请求 --
+ (void)getWithURLString:(NSString *)URLString parameters:(id)parameters success:(void (^)(NSDictionary * responseObject))success failure:(void (^)(NSError *))failure {
      AFHTTPSessionManager *manager = [AFHTTPSessionManager manager];
// 可以接受的类型
     manager.responseSerializer = [AFHTTPResponseSerializer serializer];
// 请求队列的最大并发数
// manager.operationQueue.maxConcurrentOperationCount = 5;
// 请求超时的时间
// manager.requestSerializer.timeoutInterval = 5;
[manager GET:URLString parameters:nil progress:nil success:^(NSURLSessionDataTask * _Nonnull task, id  _Nullable responseObject) {
if (success) {
NSDictionary * dictionary = [NSJSONSerialization JSONObjectWithData:responseObject options:NSJSONReadingMutableContainers error:nil];
success(dictionary);
}}  failure:^(NSURLSessionDataTask * _Nullable task, NSError * _Nonnull error) { 
if (failure) {
failure(error);
}}];
}
#pragma mark -- POST请求 --
+ (void)postWithURLString:(NSString *)URLString parameters:(id)parameters success:(void (^)(NSDictionary * responseObject))success failure:(void (^)(NSError *error))failure{
AFHTTPSessionManager *manager = [AFHTTPSessionManager manager];
manager.responseSerializer = [AFHTTPResponseSerializer serializer];
//manager.requestSerializer = [AFJSONRequestSerializer serializer];
[manager POST:URLString parameters:parameters progress:nil success:^(NSURLSessionDataTask * _Nonnull task, id  _Nullable responseObject) {
if (success) {
NSDictionary * dictionary = [NSJSONSerialization JSONObjectWithData:responseObject options:NSJSONReadingMutableContainers error:nil];
success(dictionary);
//success(responseObject);
}}  failure:^(NSURLSessionDataTask * _Nullable task, NSError * _Nonnull error) {
if (failure) {
failure(error);
}}];
}
#pragma mark -- POST/GET网络请求 --
+ (void)requestWithURLString:(NSString *)URLString
parameters:(id)parameters
type:(HttpRequestType)type
success:(void (^)(NSDictionary * responseObject))success
failure:(void (^)(NSError * error))failure {
AFHTTPSessionManager *manager = [AFHTTPSessionManager manager];
manager.responseSerializer = [AFHTTPResponseSerializer serializer];
//manager.requestSerializer = [AFJSONRequestSerializer serializer];
// [manager.requestSerializer setValue:@"application/json" forHTTPHeaderField:@"Content-Type"];//此句代码酌情增加.
switch (type) {
case HttpRequestTypeGet:
{ [manager GET:URLString parameters:parameters progress:nil success:^(NSURLSessionDataTask * _Nonnull task, id  _Nullable responseObject) {
if (success) {
NSDictionary * dictionary = [NSJSONSerialization JSONObjectWithData:responseObject options:NSJSONReadingMutableContainers error:nil];
success(dictionary);
}}  failure:^(NSURLSessionDataTask * _Nullable task, NSError * _Nonnull error) {
if (failure) {
failure(error);
}}];
}
break;
case HttpRequestTypePost:
{
[manager POST:URLString parameters:parameters progress:nil success:^(NSURLSessionDataTask * _Nonnull task, id  _Nullable responseObject) {
if (success) {
NSDictionary * dictionary = [NSJSONSerialization JSONObjectWithData:responseObject options:NSJSONReadingMutableContainers error:nil];
success(dictionary);
//success(responseObject);
}}  failure:^(NSURLSessionDataTask * _Nullable task, NSError * _Nonnull error) {
if (failure) {
failure(error);
}}];
}
break;
}
}
@end

这里是AFNetworking的常用封装.关于图片上传的方法暂未涉及.往后会继续总结.篇幅不想写太长,第二个问题请见下一篇简书.

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • Swift版本点击这里欢迎加入QQ群交流: 594119878最新更新日期:18-09-17 About A cu...
    ylgwhyh阅读 25,684评论 7 249
  • WebSocket-Swift Starscream的使用 WebSocket 是 HTML5 一种新的协议。它实...
    香橙柚子阅读 24,326评论 8 183
  • 今天非常感谢老大对我得信任,也感谢老大,给得机会,回想起以前,老大给得每一次机会,自己没有好好把握,这次我会牢牢抓...
    大勤大庆阅读 694评论 0 0
  • 记得刚买车的时候,第一次上杭长高速,那是一个冬天的早上,从杭州到安吉整段路程只见到三辆车。再看看现在,本来并不拥堵...
    子虚乌有先生阅读 1,046评论 0 0
  • 我的思念是一座桥 她的尽头不是岸 是圆 我的思念是一条路 不通往故乡 通向远方 我的思念是铁石的臂膀 被六月的大风...
    栖迟一杯酒阅读 1,573评论 1 1