博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
iOS 网络请求数据工具封装
阅读量:4289 次
发布时间:2019-05-27

本文共 2078 字,大约阅读时间需要 6 分钟。

#import <AFNetworking/AFNetworking.h>

@interface CZNetworkTools :AFHTTPSessionManager

+ (instancetype)sharedTools;

@end

=========================

#import "CZNetworkTools.h"

@implementation CZNetworkTools

+ (instancetype)sharedTools {

    staticCZNetworkTools *tools;

    

    static dispatch_once_t onceToken;

    dispatch_once(&onceToken, ^{

        

        //

        NSURL *baseURL = [NSURLURLWithString:@"http://c.m.163.com/nc/"];

        

        NSURLSessionConfiguration *config = [NSURLSessionConfigurationdefaultSessionConfiguration];

        //设置请求的超时时长

        config.timeoutIntervalForRequest =15;

        tools = [[self alloc] initWithBaseURL:baseURL sessionConfiguration:config];

        

        

        //acceptableContentTypes = [NSSet setWithObjects:@"application/json", @"text/json", @"text/javascript", nil];

        tools.responseSerializer.acceptableContentTypes = [NSSetsetWithObjects:@"application/json",@"text/json", @"text/javascript",@"text/html",nil];

    });

    

    

    return tools;

}

@end

========================

#import "CZHeadline.h"

#import "CZNetworkTools.h"

@implementation CZHeadline

+ (instancetype)headlineWithDic:(NSDictionary *)dic  {

    CZHeadline *headline = [[selfalloc] init];

    [headline setValuesForKeysWithDictionary:dic];

    return headline;

}

- (void)setValue:(id)value forUndefinedKey:(NSString *)key {}

//发送异步请求,字典转模型

+ (void)headlinesWithSuccess:(void(^)(NSArray *array))successBlock errorBlock:(void(^)(NSError *e))errorBlock {

    

   

    

    //发送异步请求,获取json数据

    [[CZNetworkTools sharedTools] GET:@"ad/headline/0-4.html"parameters:nilprogress:nilsuccess:^(NSURLSessionDataTask *_Nonnull task, NSDictionary *_Nullable responseObject) {

        

        //获取json数据,解析json

        

        //假设rootkey是变化的,获取rootkey

        NSString *rootkey = responseObject.keyEnumerator.nextObject;

        //获取数组--存储的都是字典

        NSArray *array = responseObject[rootkey];

        

        

        //存储对象的数组

        NSMutableArray *mArray = [NSMutableArrayarrayWithCapacity:10];

        for (NSDictionary *dicin array) {

            //字典转模型

            CZHeadline *headline = [selfheadlineWithDic:dic];

            [mArray addObject:headline];

        }

        

        //调用block

        if (successBlock) {

            successBlock(mArray.copy);

        }

        

        

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

        if (errorBlock) {

            errorBlock(error);

        }

    }];

    

   

    

}

@end

转载地址:http://xelgi.baihongyu.com/

你可能感兴趣的文章
避免在Java接口中使用数组的3个理由
查看>>
android 自定义带动画的统计饼图
查看>>
入职必备,Android 真实面试题(内有答案)
查看>>
JavaScript 日期处理类库---Moment.js
查看>>
仿斗鱼直播的弹幕效果实现
查看>>
Android(Java)中的Object
查看>>
Java反射机制——学习总结
查看>>
Android大图片处理
查看>>
如何将util.Date转化为sql.Date
查看>>
Java笔试题及答案
查看>>
这是一个挺有意思的Java讨论话题
查看>>
没错!java中private字段也是可以访问D!
查看>>
安卓:文本框TextView/EditText的开源库清单
查看>>
Android中Xposed框架篇---利用Xposed框架实现拦截系统方法
查看>>
腾讯老司机的RecyclerView局部刷新爬坑之路
查看>>
JavaScript null 和 undefined
查看>>
JavaScript 里的splice()与slice()
查看>>
Javascript替代eval方法
查看>>
Android开发UI布局必备基础知识
查看>>
程序员面试以及工作中真实问题汇编!
查看>>