AFNetworking 请求工具类
来源:互联网 发布:java office转换成pdf 编辑:程序博客网 时间:2024/06/16 08:22
在项目开发中 网络请求框架,当下使用人数最多的应该就是AFNetworking,AFN自3.0后全面使用session 请求网络数据.
这里附上AFN GitHub的下载地址:AFNetworking
为了更便捷的使用AFN,今天对AFN的使用进行了简单封装,如下
创建一个类QCHttpTool继承自NSObject
QCHttpTool.h 代码如下
//// QCHttpTool.h// AFNetworkingDemo//// Created by 卢奇春 on 2017/8/9.// Copyright © 2017年 卢奇春. All rights reserved.//#import <Foundation/Foundation.h>typedef enum { QCHttpMethodGET, QCHttpMethodPOST, QCHttpMethodPATCH, QCHttpMethodDELETE, QCHttpMethodPUT}QCHttpMethod;@interface QCHttpTool : NSObject/** Get 请求方法 @param url 请求地址 @param params 请求参数 @param success 返回成功 @param failure 返回失败 */+ (void)GET:(NSString *)url params:(id)params success:(void(^)(id responseObject))success failure:(void(^)(NSError *error))failure;//post 请求+ (void)POST:(NSString *)url params:(id)params success:(void(^)(id responseObject))success failure:(void(^)(NSError *error))failure;//patch 请求+ (void)PATCH:(NSString *)url params:(id)params success:(void(^)(id responseObject))success failure:(void(^)(NSError *error))failure;//delete 请求+ (void)DELETE:(NSString *)url params:(id)params success:(void(^)(id responseObject))success failure:(void(^)(NSError *error))failure;//put 请求+ (void)PUT:(NSString *)url params:(id)params success:(void(^)(id responseObject))success failure:(void(^)(NSError *error))failure;
QCHttpTool.m
//// QCHttpTool.m// AFNetworkingDemo//// Created by 卢奇春 on 2017/8/9.// Copyright © 2017年 卢奇春. All rights reserved.//#import "QCHttpTool.h"#import "AFNetworking.h"@implementation QCHttpTool//初始化创建+ (AFHTTPSessionManager *)sessionManage { AFHTTPSessionManager *manager = [AFHTTPSessionManager manager]; manager.requestSerializer = [AFJSONRequestSerializer serializer]; //请求超时时间 manager.requestSerializer.timeoutInterval = 10.0f; //设置请求头 [manager.requestSerializer setValue:@"token信息" forHTTPHeaderField:@"Authorization"]; //解析的类型 manager.responseSerializer.acceptableContentTypes = [NSSet setWithObjects:@"application/json",@"text/json", @"text/plain", @"text/html", nil]; return manager;}+ (void)GET:(NSString *)url params:(id)params success:(void(^)(id responseObject))success failure:(void(^)(NSError *error))failure { [self httpMethod:QCHttpMethodGET url:url params:params success:success failure:failure];}+ (void)POST:(NSString *)url params:(id)params success:(void (^)(id))success failure:(void (^)(NSError *))failure { [self httpMethod:QCHttpMethodPOST url:url params:params success:success failure:failure];}+ (void)PATCH:(NSString *)url params:(id)params success:(void (^)(id))success failure:(void (^)(NSError *))failure { [self httpMethod:QCHttpMethodPATCH url:url params:params success:success failure:failure];}+ (void)DELETE:(NSString *)url params:(id)params success:(void (^)(id))success failure:(void (^)(NSError *))failure { [self httpMethod:QCHttpMethodDELETE url:url params:params success:success failure:failure];}+ (void)PUT:(NSString *)url params:(id)params success:(void(^)(id responseObject))success failure:(void(^)(NSError *error))failure { [self httpMethod:QCHttpMethodPUT url:url params:params success:success failure:failure];}//http 请求+ (void)httpMethod:(QCHttpMethod)httpMethod url:(NSString *)url params:(id)params success:(void (^)(id))success failure:(void (^)(NSError *))failure { AFHTTPSessionManager *manager = [QCHttpTool sessionManage]; //请求成功执行代码 void(^successBlock)(NSURLSessionDataTask * _Nonnull task, id _Nullable responseObject) = ^(NSURLSessionDataTask * _Nonnull task, id _Nullable responseObject) { success(responseObject); }; //请求失败执行代码 void(^failureBlock)(NSURLSessionDataTask * _Nullable task, NSError * _Nonnull error) = ^(NSURLSessionDataTask * _Nullable task, NSError * _Nonnull error) { [self processHttpStatusCodeWithSessionTask:task]; failure(error); }; switch (httpMethod) { case QCHttpMethodGET: [manager GET:url parameters:params progress:nil success:successBlock failure:failureBlock]; break; case QCHttpMethodPOST: [manager POST:url parameters:params progress:nil success:successBlock failure:failureBlock]; break; case QCHttpMethodPATCH: [manager PATCH:url parameters:params success:successBlock failure:failureBlock]; break; case QCHttpMethodDELETE: [manager DELETE:url parameters:params success:successBlock failure:failureBlock]; break; default: break; }}+ (void)processHttpStatusCodeWithSessionTask:(NSURLSessionDataTask *)task { if ([task.response isKindOfClass:[NSHTTPURLResponse class]]) { NSHTTPURLResponse *response = (NSHTTPURLResponse *)task.response; NSInteger statusCode = response.statusCode; if (statusCode == 401) { NSLog(@"请求错误"); } else if (statusCode == 403) { } else if (statusCode == 413) { } else if (statusCode == 500) { NSLog(@"服务器异常"); } else if (statusCode == 501) { } else if (statusCode == 503) { } }}
以上只是简单的封装了一下,还有很多可以继续优化的
阅读全文
0 0
- AFNetworking 请求工具类
- 网络请求工具--AFNetworking
- 基于AFNetworking封装的网络请求工具类
- 基于AFNetworking封装的网络请求工具类【转载】
- iOS 数据请求类AFNetworking 简单封装
- AFNetworking json请求
- AFNetWorking发送post请求
- 封装网络请求(AFNetworking)
- AFNetworking Post请求使用
- AFNetworking Get请求使用
- AFNetWorking封装请求数据
- 同步AFNetworking请求
- AFNetWorking 请求携带cookie
- AFNetworking数据请求
- AFNetworking post请求
- AFNetWorking 网络请求
- AFNetworking的Post请求
- AFNetworking 取消请求
- spring boot:No converter found for return value of type: class另类解决办法
- ubuntu16.04安装qt5
- Leetcode655. Print Binary Tree
- codeforces 339D 简单的线段树操作
- 【HDU1950】Bridging signals (最长上升子序列DP(nlogn))
- AFNetworking 请求工具类
- 为什么RegExp.prototype.exec()的返回值会变化
- 【矩阵快速幂】HDU_2157_How many ways??
- 高速缓存区dns
- [BZOJ1004][HNOI2008]Cards-Burnside引理
- Matlab中的静态变量和全局变量
- Spring AOP原理分析一次看懂
- react-navigation
- SSM(五)基于webSocket的聊天室