AFNetworking用的很多,这里只是简单的GET请求一下数据,并进行展示,具体的深入研究包括afn的封装调用后期会跟上。
为什么要用AFNetworking?
第一点,它有人更新和维护,而且目前使用者很多。
第二点,还是使用者很多,那么他的资料,文档,demo就多,很好找遇到问题好解决。(前人栽树后人乘凉)
开整!
1、下载AFNetworking的包。贴上传送门:AFNetworking下载地址
里面有各种版本的AFNetworking,我下载是2.5.0和3.0.0的。而该文章用的是2.5.0的。
下载好了将这个文件夹托进你的工程里面。(我是新建了一个工程)
2、按照网友的说法需要添加支持的框架:
在这里添加:
3、添加好了,编译一下,没问题。
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里面修改一下:
点击最上边的一个的+,添加一个NSAppTransportSecurity,这里注意:这是一个单词,不要自作聪明的在大写字母的地方加空格,我就是加了空格了,总是不对,坑啊!
然后给这个NSAppTransportSecurity选择字典类型
再在NSAppTransportSecurity这个里面添加一个BOOL型的NSAllowsArbitraryLoads(同样不要加空格)
一定要确保NSAllowsArbitraryLoads是在NSAppTransportSecurity这个里面,而且类型一定要对。
以这个网址为例子,咱们进行get的网络请求。
先给个存放请求的方法:就在这个get里面写get 请求
然后开始在这个方法里面写get:(为了你们自己敲一遍,我就不贴代码了)
来看请求回来打印的结果:
这tm什么玩意。。。(应该是NSData类型的数据)。。。
算是成功了一步了,至少我们请求回来东西了。
然后解析(用的苹果自己的JSON解析):
请看3333的打印结果:
这又什么玩意。。。(应该是什么编码,查了没记住)不要紧,如果你有鬼脸的话,直接将网址放进去就能看见结果
大概齐自己心里有数了吧,那继续。。。
建立model和cell,并引入头文件
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
一定要加这句话,不然会崩溃。
cell.h
cell.m
cell的话我就简单的写一下,具体你们自己可以优化
其实这里打断点会发现当你追加数据的时候,model里面根本没有数据,但是最后模拟器上边显示成功,,,我也不知道咋回事,查了半天,还是搞不懂,,,待议。。。(知道是什么原因了。。。made,xcode的原因,重启一下xcode就好了。。。我太阳!)
创建tableview以及代理的实现
最后的结果:
补充:GET请求传参
我们请求的接口不仅仅是一个死的接口,有的时候需要传入参数,那么如何用afn的GET请求传参呢,下边我们一步一步进行。
首先给出一个完整的网址,我们对其进行请求:http://www.21cn.com/api/client/v2/getClientArticleList.do?userSerialNumber=d9212df45e15ba6784417320a8e215f5&accessToken=&pageSize=10&hasImg=0&articleType=0&listIds=100076c
请求很正常,结果如下:
那么我们去掉几个参数试试:http://www.21cn.com/api/client/v2/getClientArticleList.do?userSerialNumber=d9212df45e15ba6784417320a8e215f5&accessToken=&hasImg=0
我们去掉了:pageSize、listIds、articleType这3个参数,去掉之后我们请求试一试,结果如下:
显然,没有这几个参数,请求结果是啥也没有的,那么我们开始拼参:
我们再试一次请求结果:
结果显示是正常的,说明我们拼参传参是正确的,那么我们为了方便在xcode右下角的控制台随时能够看到拼接好的接口,我们在afn里面GET的方法添加一个打印:
上边这个方法,command点击进去,添加打印方法,以后我们在点击页面的时候就可以看见打印的接口了。
再次声明,这里只是简单的进行了GET请求。大神们不喜勿喷。。。
主要还是AFNetworking的导入步骤,因为查了好多资料,都没具体的步骤,可能是我太小白了吧,给小小白们补充一下。。。
网友评论