博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
网络请求的基本知识《极客学院 --AFNetworking 2.x 网络解析详解--1》学习笔记...
阅读量:6991 次
发布时间:2019-06-27

本文共 3580 字,大约阅读时间需要 11 分钟。

网络请求的基本知识   我们网络请求用的是HTTP请求

Http请求格式:请求的方法,请求头,请求正文

Http请求的Request fields:请求的头部,以及被请求头部的一些设置

Http请求的Response fields:请求的回复头,通过回复头可以了解服务器给我们的一些状态信息。

项目源码:链接: 密码: kw6s

 获取这个源码后,解压后直接拖拽进新建的Single View工程:
 然后在ViewController.m文件中import "AFNetworking.h",接着在Network.h找到GET请求:
 按cmd结合鼠标点击"GET"就可以进入Networking.m的GET的具体实现:
然后把这个GET方法中实现的部分 复制 ,因为我们需要这些代码里的一些参数。复制到ViewController.h的viewDidLoad方法里:
然后删除不需要的代码:
添加网址和修改了一点点代码:
1 - (void)viewDidLoad { 2     [super viewDidLoad]; 3     // 两个网址: 4     // http://api.openweathermap.org/data/2.5/forecast/daily?lat=39.907501&lon=116.397232&cnt=10 5      6     // http://h.hiphotos.baidu.com/image/pic/item/8d5494eef01f3a298a1c0a799c25bc315d607cb5.jpg 7      8     AFHTTPRequestOperationManager *manager            = [AFHTTPRequestOperationManager manager]; 9     10     // 设置回复内容信息11     manager.responseSerializer.acceptableContentTypes = [manager.responseSerializer.acceptableContentTypes setByAddingObject:@"text/html"];12 13     AFHTTPRequestOperation *httpOperation = [manager GET:@""14                                               parameters:parameters15                                                  success:^(AFHTTPRequestOperation *operation, id responseObject) {16                                                      17                                                  }18                                                  failure:^(AFHTTPRequestOperation *operation, NSError *error) {19                                                      20                                                  }];21 22 }
viewDidLoad

再修改了一点代码:

1 - (void)viewDidLoad { 2     [super viewDidLoad]; 3     // 两个网址: 4     // http://api.openweathermap.org/data/2.5/forecast/daily?lat=39.907501&lon=116.397232&cnt=10 5      6     // http://h.hiphotos.baidu.com/image/pic/item/8d5494eef01f3a298a1c0a799c25bc315d607cb5.jpg 7      8     NSString* urlStr = @"http://api.openweathermap.org/data/2.5/forecast/daily?lat=39.907501&lon=116.397232&cnt=10"; 9 10     AFHTTPRequestOperationManager *manager            = [AFHTTPRequestOperationManager manager];11 12     // 设置回复内容信息13     manager.responseSerializer.acceptableContentTypes = [manager.responseSerializer.acceptableContentTypes setByAddingObject:@"text/html"];14 15     [manager GET:urlStr16       parameters:nil17          success:^(AFHTTPRequestOperation *operation, id responseObject) {18              NSLog(@"%@",responseObject);//查看回复的信息19          }20          failure:^(AFHTTPRequestOperation *operation, NSError *error) {21              NSLog(@"%@",error);//以及查看错误信息22          }];23 }
这个就是用AFNeworking写出来的最简单的GET请求

运行之后就能打印出网页数据。

 经过一个简单的实例后,讲讲HTTP的请求格式:

//  = HTTP请求格式 =

//  ------------------------------
//  * 请求方法 (GET、POST等)       *
//  * 请求头   (HttpHeaderFields) *
//  * 请求正文 (数据)              *
//  ------------------------------
首先需要知道的是请求方法,有很多请求方法,其中最常用的是GET、POST方法,上面的实例使用的是GET请求,如果改为POST请求:

其它和GET请求一样:

然后运行就同样可以有数据结果。同时说明,那个网站即支持GET请求,也支持POST请求。

好,上面讲的就是请求的方法,下面讲讲请求头是什么?

 我们发送请求的时候,服务器怎么知道请求的设备是苹果手机还是安卓手机,其实在发送给服务器的包头信息,就自动的把我门的设备信息写进去了。请看上面图里的"User-Agent"的信息,它就是我的模拟器设备的信息。这个信息也是可以自己修改的。这个修改到后面会讲到。
关于头部信息,我们可以 通过 维基百科 了解,网址是:
 
 
对照:
Accept-Language用的是en英语,我们代码的包头请求信息还包括 zh中文 。
这个关系到用户的信息。
 
上面就是请求头部的信息,下面讲讲服务器返回给我们的状态信息:
 
在那个维基百科的网页里也是有相关的Response fields列表的:
 
这些很多信息可以参考维基百科的这个网址进行参考,从而可以了解所请求的服务器的头部的信息。而且其中已经显示了这个网址是可以进行GET和POST请求:
通过这个请求头部信息,可以帮助我们 理解 为什么 我们请求不成功。
 
 
最后讲讲请求的正文:
我们怎么知道请求的正文是什么呢?请求的正文就是我们需要携带的数据:
只这里我们只需要看这行代码:
注意 ? 前面的就是网址,而 ? 后面的是请求携带的参数,这些参数就是正文。然后我们把这部分正文 写进 代码 中,然后删掉urlStr中的这部分正文:

最后显示的是 cod=404表示出错了,然后我们把它改为GET请求,然后就成功了。

说明这个网址虽然 包头 信息告诉我们可以用GET和POST请求,但是通过POST给我们返回的是404的错误信息。

 

 

以上上面讲到的三点基础知识点 需要熟悉。

 
 
 
 
 
 
 
 
 
 
 
 

转载地址:http://aubvl.baihongyu.com/

你可能感兴趣的文章
购物商城Web开发第五天
查看>>
剑指Offer第36题—Java版
查看>>
txt 简单操作
查看>>
jquery $(document).ready() 与window.onload的区别
查看>>
解决Android中,禁止ScrollView内的控件改变之后自动滚动
查看>>
Windows Phone 使用FlurrySdk
查看>>
如何使用git上传代码
查看>>
动态删除下拉框内容
查看>>
Lifestyle
查看>>
spring+shiro共享session完整小例子
查看>>
GitLab 环境搭建【CentOS7】
查看>>
Python.__init__.py
查看>>
面试题总结(三)、《STL源码剖析》相关面试题总结
查看>>
WebViewCLient too slow to be used
查看>>
多维数据模型
查看>>
ORA-12514 TNS 监听程序当前无法识别连接描述符中请求服务 的解决方法
查看>>
PPP中的PAP和CHAP的区别
查看>>
基于CentOS5.5的SVN服务器搭建
查看>>
maven使用笔记
查看>>
JBoss配置使项目能在局域网其他机子上访问项目
查看>>