Android网络编程(二)构:HTTP协议报文基本结

2017-05-26  本文已影响108人  C6C

HTTP协议属于TCP/IP中的应用层,用于客户端与服务端之间的通信,客户端请求访问文本或图像等资源,服务器端则提供资源响应,HTTP协议中,必定是客户端先发起请求,服务端在未收到请求之前不会进行响应。这一章主要针对HTTP/1.1版本进行讲解,因为和HTTP/2.0有些区别。后面有空会对比这两个版本的区别。

1 HTTP在TCP/IP中的位置

HTTP与TCP/IP中其它协议的关系

找了张神图,很清晰明了的标明了HTTP的应用层协议与其它层协议的关系。

2 HTTP协议请求与响应头

HTTP协议通过客户端请求和服务端的响应来建立通信,所以必须请求和响应的信息必须得按照特定的套路来,不然双方就不认识,比如说,给日本人打电话先你得先确认好用哪种语言进行沟通,这个举例有些苍白,但是Who Care!

2.1 请求报文

客户端请求的格式我们称之为请求报文,由请求的方法,URI,HTTP协议的版本号,请求的字段(可选),还有请求的内容(可选)构成。


请求的套路:请求报文

请求方法、请求URI和协议版本号构成请求行,请求首部是可选的,包括请求首部,通用首部,实体首部,报文主体与报文首部之间必须有空行,因为服务端是通过空行来判断报文主体的。


请求报文结构

下面讲一下这些各个组成。

2.2 响应报文

收到客户端的大佬请求后,服务端会返回对应的请求信息,即响应报文,响应报文主要包括服务器端的HTTP协议版本、状态码、表示状态码的原因短语,这三者组成状态行,除此之外还有响应首部字段,以及响应主体,整体结构除了状态行,其它部分结构和请求报文类似。


响应的套路:响应报文

报文主体和首部字段之间有一个必不可少的空行。


响应报文结构

这里也大概讲一下响应报文各部分信息:

状态码 原因短语 原因短语
200 OK 成功处理客户端发来的请求
204 No Content 成功处理请求,但不返回主体内容,通常用于客户端向服务器发送信息而服务器无需返回新内容的情况下使用
206 Partial Content 客户端进行范围请求,即GET方法要求获取资源的部分内容
301 Moved Permanently 永久重定向,所请求的资源已经更换URI了
302 Found 临时重定向,所请求的资源暂时更换成新的URI
303 See Other 资源存在另一个URI,明确要求客户端采用GET方法获取资源
304 Not Modified 表示客户端带有附加条件请求资源时,服务器端已找到资源,但是不满足客户端的附加条件,3xx里的奇葩,因为跟重定向没关系
307 Temporary Redirect 临时重定向,和302有一样的意思,满足特定浏览器需求
400 Bad Request 请求报文中存在语法错误
401 Unauthorized 表示请求的内容需要有身份认证信息,嗯,大概就是你权限还不够的意思
403 Forbidden 服务器拒绝服务,没有为什么,就是拒绝
404 Not Found 服务器找不到对应请求的资源,在服务器想委婉拒绝你的时候也会用这个借口
500 Internal Server Error 什么都不用说了,服务器端出现bug了
503 Service Unavailable 还请求个蛋啊,服务器已经挂了

请求报文还有响应报文的首部字段还没有细讲,因为这些字段实在太多了,看缘分,后面再码一下,就当做扫盲了。

上一篇 下一篇

猜你喜欢

热点阅读