美文网首页
网络请求基于对AFNetWorking的一个二次封装

网络请求基于对AFNetWorking的一个二次封装

作者: 天涯海角我爱你 | 来源:发表于2016-06-16 21:48 被阅读171次

    #import

    // 这个类是基于对AFNetWorking的一个二次封装

    // 之前我们请求的方式是用NSURLSession 现在我们请求的方式变成AFNetWorking

    // 请求方式的枚举

    typedef NS_ENUM(NSInteger, RequestType) {

    RequestGET, // GET请求

    RequestPOST // POST请求

    };

    // 请求成功回调的block

    typedef void(^Finish)(NSData *data);

    // 请求失败回调的block

    typedef void(^Error)(NSError *error);

    @interface RequestManager : NSObject

    // block属性

    @property (nonatomic, copy)Finish finish;

    @property (nonatomic, copy)Error error;

    // 给controller提供的接口 传进来字符串网址 字典 请求类型 成功block 失败blcok

    + (void)requestWithUrlString:(NSString *)urlString parDic:(NSDictionary *)parDic requestType:(RequestType)requestType finish:(Finish)finish error:(Error)error;

    @end

    #import "RequestManager.h"

    @implementation RequestManager

    + (void)requestWithUrlString:(NSString *)urlString parDic:(NSDictionary *)parDic requestType:(RequestType)requestType finish:(Finish)finish error:(Error)error

    {

    RequestManager *manager = [[RequestManager alloc] init];

    [manager requestWithUrlString:urlString parDic:parDic requestType:requestType finish:finish error:error];

    }

    - (void)requestWithUrlString:(NSString *)urlString parDic:(NSDictionary *)parDic requestType:(RequestType)requestType finish:(Finish)finish error:(Error)error

    {

    // block赋值

    self.finish = finish;

    self.error = error;

    AFHTTPSessionManager *manager = [AFHTTPSessionManager manager];

    manager.responseSerializer = [AFHTTPResponseSerializer serializer];

    if (requestType == RequestGET)

    {

    [manager GET:urlString parameters:nil progress:nil success:^(NSURLSessionDataTask * _Nonnull task, id  _Nullable responseObject) {

    [self finishRequestReturnMainThread:responseObject];

    } failure:^(NSURLSessionDataTask * _Nullable task, NSError * _Nonnull error) {

    self.error(error);

    }];

    return;

    }

    [manager POST:urlString parameters:parDic progress:nil success:^(NSURLSessionDataTask * _Nonnull task, id  _Nullable responseObject) {

    [self finishRequestReturnMainThread:responseObject];

    } failure:^(NSURLSessionDataTask * _Nullable task, NSError * _Nonnull error) {

    self.error(error);

    }];

    }

    - (void)finishRequestReturnMainThread:(NSData *)data

    {

    dispatch_async(dispatch_get_main_queue(), ^{

    self.finish(data);

    });

    }

    @end

    相关文章

      网友评论

          本文标题:网络请求基于对AFNetWorking的一个二次封装

          本文链接:https://www.haomeiwen.com/subject/zdamdttx.html