HTTP协议简介

HTTP请求响应的过程

1.客户端执行请求,从url中解析主机名,有主机名解析IP,解析端口号(默认8080)。

2.客户端与服务器建立TCP连接

3.客户端通过Socket输出流发送Http请求

3.服务器向客户端返回http响应报文,客户端通过输入流解析获得报文内容。

4.关闭TCP连接,更新ui或数据

HTTP的请求方式

7中请求方式:GET,POST,DELETE,PUT,HEAD,TRACE,OPTIONS

1.GET请求

GET请求用于获取服务器中的某个资源,url 一般格式:如 http://my.csdn.net/?ref=toolbar,?后面接参数多个参数使用 & 分割

2.POST请求

post请求向服务器传递数据,通常用来提交html表单,服务器会对其进行处理。

请求参数放在的实体部分

3.PUT 请求

与GET相反,PUT向服务器写入资源,请求参数通常是url,请求服务器创建一个指定的url新的文档,如果url已经存在则替换。参数存放在实体部分。

4.Delete 请求

请求服务器删除指定url的资源,但服务器不一定会执行删除操作。参数放在URL中。

5.HEAD 请求

HEAD 请求与GET类似,但是只返回报文的首部,而不返回实体的主体部分。所以允许客户端在不获取资源情况下,获得资源的信息。HEAD的返回必须要和GET返回的头部内容一致。

6.TRACE 请求

客户端发送请求需要穿过防火墙和代理网关等,trace请求可以最终的目的服务器返回trace响应,客户端可以通过响应报文查看所有中间HTTP请求响应链上,原始报文是否被修改。

该方式主要用于诊断,查看代理和应用程序对请求产生的影响。

7.OPTIONS
OPTIONS请求用于向客户端返回服务器支持的各种功能,比如支持的请求方式等。

#HTTP 报文格式

请求报文格式

不同请求方式的请求报文内容有所差别,但是都包含四部分:请求行,请求头,空行,请求数据

这里写图片描述

1.请求行:说明了请求方法,url,和协议版本

2.请求头:请求行后面是请求头,请求头包含多个字段和值,用冒号分割。添加一个头部字段就添加一行。头部以空行结束。

3.请求主体(请求数据):空行之后是主体部分。包含了请求的数据,请求行和头部都是结构化文本,主体可以使二进制数据。

GET和DELETE

这两请求参数是在请求行的url中指定,比较简单

POST和PUT

这两请求的参数在报文主体,所以包含,请求行,请求头,和主体部分。

请求头中指定本次请求的属性如请求使用的编码方式,主机等等,boundary值改值是主体部分数据的分隔符。

请求主体,boundary开始(换行),参数的属性(格式,参数名等),空行,参数的值
参数间使用boundary分隔,最后使用boundary结束。

手动构建post报文时,格式很重要否则不能被服务端识别。

响应报文格式

与请求报文类似,包括:状态行,消息报头,空行,响应正文

这里写图片描述

响应报文和请求报文只是首行有差别。

响应返回的状态码,含义

100-199 请求已接受
200 -299成功
300-399 重定向
400-499 客户端错误
500-599 服务端错误

常见的头部字段

http规定了几种头部字段,应用程序也可以自定义字段

通用首部:可以在请求也可以在响应中使用。

请求首部:描述请求的信息

响应头部:描述响应的信息

实体首部:描述主体的信息

扩展首部:http中没有规范的首部

典型的请求首部字段:

Content-type:请求数据格式

Content-Length:消息长度

User-agent:客户端浏览器类型,可以自行设置

Accept:客户端识别的内容类型类表

Accept-Encoding:客户端识别的编码

Connection:连接有关的选项,如keep-alive

Transfer-encoding:当使用分块发送时,采用编码格式一般是chunked,这种发送报文的方式使用于文件很大需要分块发送,告知接受方需要分块接受,这时一般来说服务器将不会提供Content-Length的头信息。
编码使用若干个Chunk组成,由一个标明长度为0的chunk结束,每个Chunk有两部分组成,第一部分是该Chunk的长度和长度单位(一般不 写),第二部分就是指定长度的内容,每个部分用CRLF隔开。在最后一个长度为0的Chunk中的内容是称为footer的内容

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值