iOS 网络获取封装类
博客专区 > JoshSone 的博客 > 博客详情
iOS 网络获取封装类
JoshSone 发表于1年前
iOS 网络获取封装类
  • 发表于 1年前
  • 阅读 7
  • 收藏 0
  • 点赞 0
  • 评论 1

目的:我们在获取网络数据时,要进行很多固定而且繁琐的步骤,在这里封装了一个网络获取数据的类方法,可以在需要时引用。

#import <Foundation/Foundation.h>

typedef void(^ResponseSuccess)(id object);
typedef void(^ResponseFailed)(NSError*error);
@interface MyRootRequset : NSObject
// 这里有三个参数,分别传入网络URL地址,获取数据成功时传出的语法块,失败时传出的语法快
+(void)GetUrlWithString:(NSString*)URLStr WithRequestSuccess:(ResponseSuccess)successBlock WithRequestFailed:(ResponseFailed)failedBlock;
@end

 

#import "MyRootRequset.h"

@implementation MyRootRequset

+(void)GetUrlWithString:(NSString*)URLStr WithRequestSuccess:(ResponseSuccess)successBlock WithRequestFailed:(ResponseFailed)failedBlock{
    //URL 统一资源定位符
    NSURL*url=[NSURL URLWithString:URLStr];
    //创建一个请求
    NSMutableURLRequest*request=[NSMutableURLRequest  requestWithURL:url cachePolicy:0 timeoutInterval:5];
    //创建一个请求数据的任务(以异步的形式发送请求)
    NSURLSessionTask*task=[[NSURLSession sharedSession]dataTaskWithRequest:request completionHandler:^(NSData * _Nullable data, NSURLResponse * _Nullable response, NSError * _Nullable error) {
        if (error==nil) {
    //解析数据
            NSError*error_json;
            id object=[NSJSONSerialization JSONObjectWithData:data options:0 error:&error_json];
    //主线程加载UI     
            dispatch_sync(dispatch_get_main_queue(), ^{
                if (error_json!=nil) {
                    //解析错误
                    if (failedBlock!=nil) {
                        failedBlock(error_json);
                    }
                }else{
                    //解析成功
                    if (successBlock!=nil) {
                        successBlock(object);
                    }
                }
            });
                    }else{
                        dispatch_sync(dispatch_get_main_queue(), ^{
                    //网络错误
                            if (failedBlock!=nil) {
                                failedBlock(error);
                            }
                        });
                   }
    }];

    [task resume];
}
@end

 

共有 人打赏支持
粉丝 5
博文 62
码字总数 32794
评论 (1)
小码爱大牛
你好,我是深圳一家以家居安防为核心的智能家居公司的HR在招聘一位会ffmpeg的Android开发工程师和一位iOS开工程师。不知道您自己或者身边同事朋友有没有在看工作机会的呢?如果感兴趣可以发简历到3288771685@qq.com或者加起QQ。
×
JoshSone
如果觉得我的文章对您有用,请随意打赏。您的支持将鼓励我继续创作!
* 金额(元)
¥1 ¥5 ¥10 ¥20 其他金额
打赏人
留言
* 支付类型
微信扫码支付
打赏金额:
已支付成功
打赏金额: