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) {        }    }}

以上只是简单的封装了一下,还有很多可以继续优化的

原创粉丝点击