你的位置:首页 > 软件开发 > 操作系统 > 网络请求接口的封装(一)

网络请求接口的封装(一)

发布时间:2015-11-24 16:00:27
iOS开发-网络-合理封装请求接口分享 新浪微博腾讯微博微信QQ好友人人网TwitterFacebookGoogle +TumblrLinkedin☆ 特别推荐:希望有缘来到小站的用户们,如果平时需要服务器主机托管,云服务,机房机柜带宽租用等,可以交个朋友,我叫董礼 QQ 9 ...

iOS开发-网络-合理封装请求接口

☆ 特别推荐:希望有缘来到小站的用户们,如果平时需要服务器主机托管,云服务,机房机柜带宽租用等,可以交个朋友,我叫董礼 QQ 93663045 真诚交友,用心服务,价格最低!

概述

如今大多App都会与网络打交道,作为开发者,合理的对网络后台请求接口进行封装十分重要。本文要介绍的就是一种常见的采用回调函数(方法)的网络接口封装,也算的是一种构架吧。

这个构架主要的idea是这样的,把所有的接口封装成一个类,在工程中随时可以调用。并且利用代理Delegate构建回调方法(callBack),工程中随处可以通过回调方法监听网络请求的反馈,也就是说,一旦得到了服务器反馈的数据,回调函数中的代码就(才)会被激活。网络请求基于AFNetworking(AFNetworking,非常有名的网络请求第三方类库),请求均为异步。如此构架,非常灵活很容易扩展和复用。

 

讲解

要想使用本文介绍的构架,你首先需要掌握代理(Delegate),如果你不熟悉代理,这个构架对你来说将会很不解。对于不熟悉代理的同学们,建议你们去看一下资料。网络请求其实说白了就是和服务器做一个数据交互,App把请求数据发给服务器,服务器返回给App一个反馈数据。请先看一下这个构架的示意图,如下:

网络请求接口的封装(一)

如上图,这个构架的主要节点有三个,封装网络请求的类(接口类)、使用网络请求的类(图中的ViewController)、和服务器。

Ok~故事是这样的,一个夜黑风高的…醉醺醺ViewController走在湖边,为了找回被关在云端的Data,他苦练数载终于参透了《接口类》,天地无情,今天是时候做个了断了。

于是乎他从怀中拿出了传说中的“接口类”,使用内力,实例化了一个接口类的对象,接着口中念出“接口类实例.delegate=self”,拔出利剑在身旁实现了“接口类”中的一个代理方法。然后调用接口的方法,方法通过内嵌的AFNetworking,向服务器发出了一道请求。又是一阵夜风吹过,三两枯叶瑟瑟落下。ViewController酣意渐浓闭上了眼睛,现在他能做的唯有等待…

镜头一转,月色中,在天上,在云端的服务器,ViewController刚才发出的请求正在兴风作浪,云端值夜班的众神丝毫不敢怠慢各个健步如飞,从数据库中搜索着能化解这道请求的神器。

此时,ViewController困意渐浓,眼皮似坠了千金重物,意识也渐渐模糊。突然云端显出异像,ViewController顿时醒了过来,隐约可以看到,云端有数据丝丝缕缕的流动,而自己怀中的“接口类”内嵌的AFNetworking也变得炽热起来,HTTP反馈block像是要**一样的颤动着。ViewController豆大的汗珠从额头滚下,再也不能淡定,口中叨咕着,快了,快来了… 一个霹雳,刚才用剑实现的代理方法金光一闪刺得ViewController捂住了双眼。

一切都回归安静后,ViewController睁开眼睛,发现Data安静的躺在代理方法的里面…

 

代码示例

下面通过一个例子,来介绍一下。

打开Xcode我建了一个SingleViewApp,然后把AFNetworking加载进工程,如下图:

网络请求接口的封装(一)

我们 OpenWeatherMap提供的天气预报的API作为例子,简单地利用上述构架,做一个天气预报的App

我们来看一下这个接口怎么用,很简单:

例子:http://api.openweathermap.org/data/2.5/weather?q=beijing

参数:q=城市名字

返回Json:

{"coord":{"lon":116.4,"lat":39.91},"sys":{"type":1,"id":7405,"message":0.013,"country":"CN","sunrise":1435870233,"sunset":1435924003},"weather":[{"id":800,"main":"Clear","description":"Sky is Clear","icon":"01d"}],"base":"stations","main":{"temp":305.43,"pressure":1008,"humidity":28,"temp_min":302.15,"temp_max":308.71},"visibility":10000,"wind":{"speed":2,"deg":0},"clouds":{"all":0},"dt":1435900364,"id":1816670,"name":"Beijing","cod":200}

 

原标题:网络请求接口的封装(一)

关键词:网络

*特别声明:以上内容来自于网络收集,著作权属原作者所有,如有侵权,请联系我们: admin#shaoqun.com (#换成@)。