文档章节

iOS 网络获取封装类

JoshSone
 JoshSone
发布于 2016/11/11 00:11
字数 267
阅读 9
收藏 0

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

#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

 

© 著作权归作者所有

共有 人打赏支持
JoshSone
粉丝 7
博文 76
码字总数 32794
作品 0
长春
iOS工程师
加载中

评论(1)

小码爱大牛
小码爱大牛
你好,我是深圳一家以家居安防为核心的智能家居公司的HR在招聘一位会ffmpeg的Android开发工程师和一位iOS开工程师。不知道您自己或者身边同事朋友有没有在看工作机会的呢?如果感兴趣可以发简历到3288771685@qq.com或者加起QQ。
再看知名应用背后的第三方开源项目

知名应用程序的设计和技术一直都是开发者需要学习的,同样这些应用所使用的开源框架也是不可忽视的一部分。此前《iOS第三方开源库的吐槽和备忘》中作者ibireme列举了国内多款知名应用所使用的...

hejunbinlan
2015/08/18
0
0
(转)直接拿来用!最火的iOS开源项目(一)

AFNetworking 在众多iOS开源项目中,AFNetworking可以称得上是最受开发者欢迎的库项目。AFNetworking是一个轻量级的iOS、Mac OS X网络通信类库,现在是GitHub上第三大Objective-C库。它建立在...

孙启超
2013/06/21
0
0
(转)ASIHTTPRequest类库简介和使用说明

官方网站: http://allseeing-i.com/ASIHTTPRequest/ 。 可以从上面下载到最新源码,以及获取到相关的资料。 使用iOS SDK中的HTTP网络请求API,相当的复杂,调用很繁琐,ASIHTTPRequest就是一...

ioser
2011/06/24
0
0
开源中国iOS客户端学习——(四)GCDiscreetNotificationView提示视图

GCDiscreetNotificationView 类库作用是: 在不阻止用户与设备应用程序交互情况下,作为一个通知视图来显示一个当前的状态。 GCDiscreetNotificationView 类库下载地址 https://github.com/g...

青云_K
2013/01/10
0
0
使用Swift读取Cookie内容

前言 一个http请求中,我们经常会涉及到Get请求的URL Param,POST请求的HTTP Body,Response Json,这些都是一个标准REST API标配的元素。 在一些安全验证的API中,通常会涉及到Cookie。当用...

DragonFK
2015/07/12
0
0

没有更多内容

加载失败,请刷新页面

加载更多

20181018 上课截图

![](https://oscimg.oschina.net/oscnet/49f66c08ab8c59a21a3b98889d961672f30.jpg) ![](https://oscimg.oschina.net/oscnet/a61bc2d618b403650dbd4bf68a671fabecb.jpg)......

小丑鱼00
52分钟前
1
0
WinDbg

参考来自:http://www.cnit.net.cn/?id=225 SRV*C:\Symbols*http://msdl.microsoft.com/download/symbols ctrl + d to open dump_file Microsoft (R) Windows Debugger Version 6.12.0002.633......

xueyuse0012
今天
2
0
OSChina 周五乱弹 —— 想不想把92年的萝莉退货

Osc乱弹歌单(2018)请戳(这里) 【今日歌曲】 @罗马的王:分享松澤由美的单曲《地球ぎ》 很久没看圣斗士星矢了 《地球ぎ》- 松澤由美 手机党少年们想听歌,请使劲儿戳(这里) @开源中国首...

小小编辑
今天
15
2
springBoot条件配置

本篇介绍下,如何通过springboot的条件配置,控制Bean的创建 介绍下开发环境 JDK版本1.8 springboot版本是1.5.2 开发工具为 intellij idea(2018.2) 开发环境为 15款MacBook Pro 前言 很多时候,...

贺小五
今天
1
0
javascript source map 的使用

之前发现VS.NET会为压缩的js文添加一个与文件名同名的.map文件,一直没有搞懂他是用来做什么的,直接删除掉运行时浏览器又会报错,后来google了一直才真正搞懂了这个小小的map文件背后的巨大...

粒子数反转
昨天
1
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部