至于为什么要进行HTTP请求我就不说了。本文主要对HTTP协议做了一些介绍,主要针对网络编程和面试。
先从流程开始说起
APP <---> 服务器 <---> 后台
1)App 也就是移动端告诉服务器想要什么样的数据。 2)服务器接收到了命令,去后台查找。 3)查找完之后,服务器返回给移动端。 流程其实很好理解,但是落实到代码上就很复杂了。如果我们用AFNetworking第三方库请求数据,只要调用API,填上URL和请求方法(GET和POST)就可以等着服务器返回数据了。其实真实的情况并不是如此简单。那服务器是根据什么知道知道移动端要请求什么数据的呢?我们为什么要填写URL呢?一个完整的URL又包含哪些信息呢?URL
我们每次请求数据都要发送一个发送一个http请求,往方法里传一个参数,就是URL。eg:。(我的博客地址,会定期更新一些技术博客,欢迎关注。)
http : 表示这个请求是遵守http协议 www.cnblogs.com :是服务器的域名。一些个URL没有域名直接就是IP地址,eg: 就是把 www.cnblogs.com 换成42.121.252.58。其实都一样,到最后都得解析成IP地址,就是一串数字。那IP地址有什么用?用处大了,IP地址可以帮我们找到唯一的服务器,不然全世界那么多服务器,鬼知道要向哪台服务器请求数据。 /doujiangyoutiao/ :就是请求路径,告诉服务器,要请求什么数据了。HTTP请求
那介绍完URL,就该介绍HTTP协议了。HTTP协议规定,一个完整的由客户端发给服务器的HTTP请求包括请求行,请求头,请求体。
1.请求行:包含了请求方法、请求资源路径、HTTP协议版本; GET /u/2552663324 HTTP/1.1 2.请求头:包含了对客户端的环境描述、客户端请求的主机地址等信息 (1)客户端想访问的主机地址 Host:218.30.115.123 (2)客户端的类型,客户端的软件环境 User-Agent:Mozilla/5.0 (Macintosh; Intel Mac OS X 10.11; rv:48.0) Gecko/20100101 Firefox/48.0 (3)客户端所能接收的数据类型 Accept:text/html ,/ (4)客户端的语言环境 Accept-Language:zh-cn (5)客户端支持的数据压缩格式 Accept-Encoding:gzip 3.请求体:POST请求才有,GET没有。是客户端发给服务器的具体数据,比如文件数据。HTTP请求响应
客户端向服务器发送请求,服务器应当做出响应,及返回数据给客户端。HTTP协议规定:1个完整的HTTP响应中包换以下内容:状态行,响应头,实体内容,和HTTP请求相对。
1.状态行:包含了HTTP协议版本、状态码、状态英文名称。 (1)HTTP/1.1 200 OK 2.响应头:包含了对服务器的描述、对返回数据的描述。 (1)服务器的类型 Server:Apache-Coyote/1.1 (2)返回数据的类型 Content-Type:text/html;charset=UTF-8 (3)返回数据的长度 Content-Length:3012 (4)响应的时间 Date:Wed, 28 Sep 2016 06:38:08 GMT 3.实体内容:服务器返回给客户端的具体数据,比如文件数据。