现在的位置: 首页 > 综合 > 正文

Java http 请求/响应信息解析

2018年02月09日 ⁄ 综合 ⁄ 共 1358字 ⁄ 字号 评论关闭

HTTP允许Web服务器和浏览器通过网络发送并接收数据,是一种基于“request-response”,Http使用可靠的TCP连接,当前最新版本是HTTP/1.1,定义域RFC2616中,下载地址

http://www.w3.org/Protocols/HTTP/1.1/

首先介绍一下请求和响应的基本格式

HTTP请求信息

HTTP请求一般包含三个部分,从上到下依次是:

1、第一行:请求方法 URI  协议/版本(例:GET /index.jsp HTTP/1.1)

2、几行header:  请求头信息(多行,例子:Connection: Keep-Alive)

3、请求体body:  请求体和请求头之间有一个空行,只能包含回车换行符(CRLF \n\r)

一个简单请求示例如下:

  1. POST /login.actionHTTP/1.1
  2. user-agent=Java/1.6.0_31
  3. host=localhost:8080
  4. accept=text/html,image/gif, image/jpeg, *; q=.2, */*; q=.2
  5. connection=keep-alive

  6. username=xxx&password=xxx                

注:注意上面请求头和请求体之间必须有一个空行(回车换行符CRLF),这样HTTP服务器才知道请求体从哪里开始。注意请求头中Content-Length: 25是请求体中字节byte数。

java示例:

  1. HttpURLConnectionconn = (HttpURLConnection)
    new URL(url).openConnection();
  2. conn.setRequestMethod("GET");
  3. conn.setRequestProperty("user-agent","Mozilla/4.0 (compatible; MSIE 7.0; Windows NT 6.0; Trident/4.0)");    

HTTP 响应信息

 响应信息与请求信息类似,也包括三部分:

1、  协议 状态码  描述  (例: HTTP/1.1 200 OK)

2、  响应头信息

3、  响应体

一个响应示例如下:

  1. HTTP/1.1 200 OK
  2. Content-Type: text/html
  3. Content-Length: xxx

  4. <html></html>

注:响应头与响应体之间也有一个空行,以表示响应体的开始。

关于请求和相应的详细头信息,参考:http://0jinx1.blog.163.com/blog/static/6805858920116944017583/ 

    

下面我们介绍一下持久连接 Connection: Keep-Alive新特性

在1.1版本之前,当服务器将请求的资源返回后,就会断开与客户端浏览器的连接,此时网页上包含的其它资源,如图片等就会通过打开其它连接来下载。对系统来说,打开和关闭一个连接的开销是很大的,所以这样的操作既浪费资源也不搞笑。在1.1版本中,引入了持久连接的概念,当浏览器下载页面后,服务器并不会马上断开连接,而是等页面把所包含的资源都下载完毕后才断开连接,这样页面及页面所包含的所有资源都会通过一个连接来下载。1.1版本中会默认使用持久连接,也可以在请求头信息中手动指定,即设置请求头Connection:Keep-Alive。

抱歉!评论已关闭.