ios开发之--使用AFNetWorking 3.1.0 ,简单的请求封装类

Posted 稻草人11223

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了ios开发之--使用AFNetWorking 3.1.0 ,简单的请求封装类相关的知识,希望对你有一定的参考价值。

从苹果系统自带的请求类,到ASIHttpRequest第三方请求类,再到AFNetWorking第三方请求类,目前只要牵扯到数据请求,基本上都是用AFN,所以,这里纯粹是记录下:

hRequestTools.h

#import <Foundation/Foundation.h>

/**
 *  网络请求类型
 */
typedef NS_ENUM(NSUInteger,HttpRequestType) {
    /**
     *  get请求
     */
    HttpRequestTypeGet = 1,
    /**
     *  post请求
     */
    HttpRequestTypePost = 2
};

@interface hRequestTools : NSObject


/**
 *  发送网络请求
 *
 *  @param URLString   请求的网址字符串
 *  @param parameters  请求的参数
 *  @param type        请求的类型
 *  @param success     请求的结果
 */
+ (void)requestWithURLString:(NSString *)URLString
                  parameters:(id)parameters
                        type:(HttpRequestType)type
                     success:(void (^)(id responseObject))success
                     failure:(void (^)(NSError *error))failure;

hRequestTools.m

#pragma mark 封装的请求方法
+ (void)requestWithURLString:(NSString *)URLString
                  parameters:(id)parameters
                        type:(HttpRequestType)type
                     success:(void (^)(id responseObject))success
                     failure:(void (^)(NSError *error))failure
{
    AFHTTPSessionManager *manager = [AFHTTPSessionManager manager];
    manager.responseSerializer = [AFHTTPResponseSerializer serializer];
    manager.requestSerializer.timeoutInterval = 30.0f;
    switch (type) {
        case HttpRequestTypeGet:
        {
            [manager GET:URLString parameters:parameters success:^(NSURLSessionDataTask *task, id responseObject) {
                if (success) {
                    id jsons = [NSJSONSerialization JSONObjectWithData:responseObject options:NSJSONReadingMutableContainers  error:nil];
                    success(jsons);
                }
            } failure:^(NSURLSessionDataTask *task, NSError *error) {
                if (failure) {
                    failure(error);
                }
            }];
        }
            break;
        case HttpRequestTypePost:
        {
            if (internets) {//有网络时
                AFHTTPSessionManager *manager = [AFHTTPSessionManager manager];
                manager.responseSerializer = [AFHTTPResponseSerializer serializer];
                [manager POST:URLString parameters:parameters success:^(NSURLSessionDataTask * _Nonnull task, id  _Nullable responseObject) {
                    if (success) {
                        id jsons = [NSJSONSerialization JSONObjectWithData:responseObject options:NSJSONReadingMutableContainers  error:nil];
                        success(jsons);
                    }
                } failure:^(NSURLSessionDataTask * _Nullable task, NSError * _Nonnull error) {
                    if (failure) {
                        failure(error);
                        [HTools showTextOnlyHud:@"数据请求失败,请重试。" delay:2.0];
                    }
                }];
            }else //无网络时
            {
                [HTools showTextOnlyHud:@"请检查您的网络" delay:2.0];
                NSError *error = nil;
                failure(error);
            }
            
        }
            break;
        default:
            break;
    }
    
    
}

请求里面如果要加缓存的话,可以和YYCache这个第三方配合使用,

关于YYCache,可以推荐几个链接:http://www.jianshu.com/p/b8dcf6634fab

 

以上是关于ios开发之--使用AFNetWorking 3.1.0 ,简单的请求封装类的主要内容,如果未能解决你的问题,请参考以下文章

iOS开发之AFNetworking 3.0使用总结

iOS开发之AFNetworking 3.0使用总结

iOS开发网络数据之AFNetworking使用

ios开发之--swift下AFNetworking的使用

iOS开发网络数据之AFNetworking使用

iOS网络开发之AFNetworking