文档章节

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
(转)ASIHTTPRequest类库简介和使用说明

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

ioser
2011/06/24
0
0
(转)直接拿来用!最火的iOS开源项目(一)

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

孙启超
2013/06/21
0
0
iOS基于FreeStreamer的仿网易云音乐播放器

前言 前段时间写过一个基于VLCKit实现的网易云音乐播放demo-GKAudioPlayerDemo,以及3篇文章 iOS-VLCKit实现仿网易云音乐播放音乐(一) iOS-VLCKit实现仿网易云音乐播放音乐(二) iOS-VLCK...

QuintGao
05/11
0
0
开源中国iOS客户端学习——(四)GCDiscreetNotificationView提示视图

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

青云_K
2013/01/10
0
0

没有更多内容

加载失败,请刷新页面

加载更多

统一客服消息返回错误:{"errcode":43004,"errmsg":"require subscribe hint: [9Vv08633952]"}

公众号或者小程序发送客服消息错误: {"errcode":43004,"errmsg":"require subscribe hint: [9Vv08633952]"} 场景:小程序使用公众号的服务消息,推送消息,如果接收人没有关注公众号,就会出...

tianma3798
23分钟前
1
0
Rainbond V5.0 Beta公测公告

Rainbond支撑企业应用的开发、架构、交付和运维的全流程,通过“无侵入”架构无缝衔接各类企业应用,底层资源可以对接和管理IaaS、虚拟机和物理服务器 Rainbond V5.0即日起开启Beta版本公测,...

好雨云帮
41分钟前
2
0
Word Pattern(leetcode290)

Given a pattern and a string str, find if str follows the same pattern. Here follow means a full match, such that there is a bijection between a letter in pattern and a non-empt......

woshixin
46分钟前
1
0
Kubernetes 1.13.1快速升级

Kubernetes 1.13.1已经正式发布,快速升级(含国内镜像快速下载链接)包括升级kubeadm/kubectl/kubelet版本、拉取镜像、升级Kubernetes集群三个主要步骤。注意Kubernetes 1.12.3版本暂时不支...

openthings
49分钟前
2
0
多线程的实现方式

多线程是指 一个程序运行时,产生或使用了不止一个线程。 线程的生命周期是怎么样的,下面这张图我们可以看出些端倪: 这章我们主要讨论多线程实现的方式,基础知识部分我们可以下来再恶补。...

搬砖大侠
今天
1
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部