AFNetwoking(一)GET请求

AFNetworking用的很多,这里只是简单的GET请求一下数据,并进行展示,具体的深入研究包括afn的封装调用后期会跟上。

为什么要用AFNetworking?

第一点,它有人更新和维护,而且目前使用者很多。

第二点,还是使用者很多,那么他的资料,文档,demo就多,很好找遇到问题好解决。(前人栽树后人乘凉)

开整!

1、下载AFNetworking的包。贴上传送门:AFNetworking下载地址

里面有各种版本的AFNetworking,我下载是2.5.0和3.0.0的。而该文章用的是2.5.0的。

AFNetwoking(一)GET请求_第1张图片

下载好了将这个文件夹托进你的工程里面。(我是新建了一个工程)

2、按照网友的说法需要添加支持的框架:

AFNetwoking(一)GET请求_第2张图片

在这里添加:

AFNetwoking(一)GET请求_第3张图片

3、添加好了,编译一下,没问题。

4、哪里需要用就添加头文件:

AFNetwoking(一)GET请求_第4张图片

5、开始GET网络请求:

先贴上咱们网络请求的网址:http://www.21cn.com/api/client/v2/getClientArticleList.do?userSerialNumber=85d3bbb95d03920e3c53d3801781c806&accessToken=&pageSize=1&hasImg=0&articleType=0&listIds=711r,846r,1235r

在这里需要注意的是,这个网址不是https的,在iOS9下边请求的话,会报错:


所以需要在info.plist里面修改一下:

AFNetwoking(一)GET请求_第5张图片
AFNetwoking(一)GET请求_第6张图片

点击最上边的一个的+,添加一个NSAppTransportSecurity,这里注意:这是一个单词,不要自作聪明的在大写字母的地方加空格,我就是加了空格了,总是不对,坑啊!

然后给这个NSAppTransportSecurity选择字典类型

再在NSAppTransportSecurity这个里面添加一个BOOL型的NSAllowsArbitraryLoads(同样不要加空格)

一定要确保NSAllowsArbitraryLoads是在NSAppTransportSecurity这个里面,而且类型一定要对。

以这个网址为例子,咱们进行get的网络请求。

先给个存放请求的方法:就在这个get里面写get 请求

AFNetwoking(一)GET请求_第7张图片

然后开始在这个方法里面写get:(为了你们自己敲一遍,我就不贴代码了)

AFNetwoking(一)GET请求_第8张图片

来看请求回来打印的结果:

AFNetwoking(一)GET请求_第9张图片

这tm什么玩意。。。(应该是NSData类型的数据)。。。

算是成功了一步了,至少我们请求回来东西了。

然后解析(用的苹果自己的JSON解析):

AFNetwoking(一)GET请求_第10张图片

请看3333的打印结果:

AFNetwoking(一)GET请求_第11张图片

这又什么玩意。。。(应该是什么编码,查了没记住)不要紧,如果你有鬼脸的话,直接将网址放进去就能看见结果

AFNetwoking(一)GET请求_第12张图片
AFNetwoking(一)GET请求_第13张图片

大概齐自己心里有数了吧,那继续。。。

建立model和cell,并引入头文件


AFNetwoking(一)GET请求_第14张图片

model.h   (我还是很好的,这个你们不用一个个的拷贝了哈哈)

@property(nonatomic,assign)intarticleId;

@property(nonatomic,assign)intarticleType;

@property(nonatomic,strong)NSString*articleUrl;

@property(nonatomic,assign)intcolumnId;

@property(nonatomic,assign)intdisplayType;

@property(nonatomic,copy)NSString*firstPicUrl;

@property(nonatomic,assign)intisHot;

@property(nonatomic,assign)intisRecommend;

@property(nonatomic,assign)intisSpecial;

@property(nonatomic,assign)intoriginalHeight;

@property(nonatomic,assign)intoriginalWidth;

@property(nonatomic,copy)NSString*publishTime;

@property(nonatomic,assign)intregionId;

@property(nonatomic,assign)intreviewNum;

@property(nonatomic,assign)intshowBigPic;

@property(nonatomic,assign)intsourceId;

@property(nonatomic,copy)NSString*sourceName;

@property(nonatomic,copy)NSString*summary;

@property(nonatomic,copy)NSString*tags;

@property(nonatomic,copy)NSString*thumbImgUrl;

@property(nonatomic,copy)NSMutableArray*thumbImgUrlList;

@property(nonatomic,copy)NSString*title;

@property(nonatomic,copy)NSString*topTime;

@property(nonatomic,assign)intweight;

model.m


AFNetwoking(一)GET请求_第15张图片

一定要加这句话,不然会崩溃。

cell.h


AFNetwoking(一)GET请求_第16张图片

cell.m


AFNetwoking(一)GET请求_第17张图片

cell的话我就简单的写一下,具体你们自己可以优化


AFNetwoking(一)GET请求_第18张图片

其实这里打断点会发现当你追加数据的时候,model里面根本没有数据,但是最后模拟器上边显示成功,,,我也不知道咋回事,查了半天,还是搞不懂,,,待议。。。(知道是什么原因了。。。made,xcode的原因,重启一下xcode就好了。。。我太阳!)


AFNetwoking(一)GET请求_第19张图片

创建tableview以及代理的实现


AFNetwoking(一)GET请求_第20张图片

最后的结果:

AFNetwoking(一)GET请求_第21张图片

补充:GET请求传参

我们请求的接口不仅仅是一个死的接口,有的时候需要传入参数,那么如何用afn的GET请求传参呢,下边我们一步一步进行。

首先给出一个完整的网址,我们对其进行请求:http://www.21cn.com/api/client/v2/getClientArticleList.do?userSerialNumber=d9212df45e15ba6784417320a8e215f5&accessToken=&pageSize=10&hasImg=0&articleType=0&listIds=100076c

请求很正常,结果如下:

AFNetwoking(一)GET请求_第22张图片

那么我们去掉几个参数试试:http://www.21cn.com/api/client/v2/getClientArticleList.do?userSerialNumber=d9212df45e15ba6784417320a8e215f5&accessToken=&hasImg=0

我们去掉了:pageSize、listIds、articleType这3个参数,去掉之后我们请求试一试,结果如下:



AFNetwoking(一)GET请求_第23张图片

显然,没有这几个参数,请求结果是啥也没有的,那么我们开始拼参:


AFNetwoking(一)GET请求_第24张图片

我们再试一次请求结果:



AFNetwoking(一)GET请求_第25张图片

结果显示是正常的,说明我们拼参传参是正确的,那么我们为了方便在xcode右下角的控制台随时能够看到拼接好的接口,我们在afn里面GET的方法添加一个打印:


AFNetwoking(一)GET请求_第26张图片

上边这个方法,command点击进去,添加打印方法,以后我们在点击页面的时候就可以看见打印的接口了。


AFNetwoking(一)GET请求_第27张图片


再次声明,这里只是简单的进行了GET请求。大神们不喜勿喷。。。

主要还是AFNetworking的导入步骤,因为查了好多资料,都没具体的步骤,可能是我太小白了吧,给小小白们补充一下。。。

你可能感兴趣的:(AFNetwoking(一)GET请求)