HTTP接口的请求和响应

1.HTTP请求及其结构

HTTP是基于客户端/服务器(C/S)的架构模型。通过一个可靠的链接来交换信息,是一个无状态的请求/相应协议。一个HTTP“客户端”是一个应用程序,通过连接到服务器发送一个或多个HTTP请求的目的。一个HTTP“服务器”同样也是一个应用程序通过接受客户端的请求并向客户端发送HTTP响应数据。HTTP使用统一资源标识符(Uniform Resource Identifiers,URI)来传输数据和建立连接。一旦建立连接后,数据信息就通过类似Internet邮件所使用的格式[RFC5322]和多用途Internet邮件扩展(MIME)[RFC2045]来传送。

HTTP的请求结构:客户端发送一个HTTP请求到服务器的请求格式包括以下格式:请求行(Request line)、请求头部(header)、空行和请求数据四个部分组成。

2.HTTP常用请求方式

HTTP1.0定义了三种请求方法:GET(请求指定的页面信息,并返回实体主体:网页/数据),POST(向指定资源提交数据进行处理请求(例如提交表单或者上传文件)。数据包含在请求体中。POST请求可能会导致新的资源的建立和/或已有资源的修改),HEAD方法(类似于get请求,只不过返回的响应中没有具体的内容,用于获取报头)。

HTTP1.1新增了五种请求方法:OPTIONS(返回服务器针对特定资源所支持的HTTP请求方法),PUT(从客户端向服务器传输的数据取代指定的文档内容),DELETE(请求服务器删除指定的页面),TRACE(回显服务器收到的请求,主要用于测试或诊断),CONNECT方法(HTTP/1.1协议中预留给能够将连接改为管道方式的代理服务器)。

3.HTTP响应及其结构

HTTP响应也由四个部分组成,分别是状态行、消息包头、空行和响应报文。具体格式如下所示:

HTTP/1.1 200 OK ——状态行

Date:Sat,31 Dec 2005 23:59:59 GET ——消息报头

Connect-Type:text/html;charset=ISO-8859-1

Content-Length:122

——空行

<html>

<head>

<title>Wrox Homepage</title>

</head> ——响应正文

<body>

<!-- body goes here -->

</body>

</html>

HTTP常见响应状态码(Status Code)

当浏览者访问一个网页时,浏览者的浏览器会向网页所在服务器发出请求。当浏览器接收并显示网页前,此网页所在的服务器会返回一个包含HTTP状态码的消息头(server header)用以响应浏览器的请求。

常见状态码:

200:请求成功

301:资源被永久转移到其他URL

404:请求的资源(网页等)不存在

500:内部服务器错误

1**:信息,服务器收到请求,需要请求者继续执行操作

2**:成功,操作被成功接收并处理

3**:重定向,需要进一步的操作已完成请求

4**:客户端错误,请求包含语法错误或无法完成请求

5**:服务器错误,服务器在处理请求的过程中发生了错误