简化的说:
WebService = HTTP 协议 + XML
Rest = HTTP 协议 + Json
各种 API = HTTP 协议 + XML / Json 来实现
HTTP 请求信息格式
① 请求行
a.请求方法:GET,POST,PUT,DELETE,TRACE,OPTIONS
b.请求路径(请求的资源,URL 的一部分)
c.所用协议
② 请求头信息
③ 请求主体信息
HTTP 请求除了浏览器,其他只要满足 HTTP 协议的工具都可以发送 HTTP 请求,例如 Telnet(Telnet 协议是 TCP/IP 协议族中的一员,是 Internet 远程登陆服务的标准协议和主要方式):
Windows 下进入 CMD,输入要接收 HTTP 请求的服务器的 ip 地址:
telnet 127.0.0.17 80
(如果提示:'telnet' 不是内部或外部命令,也不是可运行的程序,则进入:"控制面板” --> “程序” ---> “打开或关闭Windows功能”,勾上“telnet客户端")
按下 ctrl + ]
再按下 Enter,打开回显功能(便于调试);
此时 telnet 客户端已经连接上了 80 端口,于是可以按照 HTTP 协议的标准发送请求:
GET 请求,请求 /php/http/1.php 这个路径,使用 HTTP/1.1 协议进行请求(请求行输入完毕),回车
虚拟目录是 Host:127.0.0.17(请求头信息输入完毕)
回车
回车(空行:头信息和主体信息(可以没有)以空行区分)
HTTP 请求与响应如下:
HTTP 响应信息格式
上图中的响应信息如下:
HTTP/1.1 200 OKDate: Tue, 07 Jul 2015 13:04:57 GMTServer: Apache/2.2.21 (Win32) PHP/5.3.10X-Powered-By: PHP/5.3.10Content-Length: 5Content-Type: text/htmlhello
其中,
响应行:HTTP/1.1 200 OK
响应行分 3 部分:协议版本(HTTP/1.1)、状态码(200)、状态文字(OK)
响应头信息:格式为
key:value
key:value
key:value
...
key:value
content-length:主题的长度
空行
响应主体信息:hello
【例】用 telnet 完成 HTTP 的 POST 请求。
先写一个 php 文件 2.php:
1
分析:HTTP 请求的格式
$方法 $路径 $协议
请求头信息
(空行)
请求主体信息
如图:
注意:
头信息里要标明主体的长度 Content-Length 和 主体类型 Content-type:application/x-www-form-urlencoded
POST /php/http/2.php HTTP/1.1Host: 127.0.0.17Content-type: application/x-www-form-urlencodedContent-length:19username=dee&age=28HTTP/1.1 200 OKDate: Tue, 07 Jul 2015 16:15:03 GMTServer: Apache/2.2.21 (Win32) PHP/5.3.10X-Powered-By: PHP/5.3.10Content-Length: 13Content-Type: text/htmlwrite success遗失对主机的连接。C:\Users\Administrator>
其中:
主体信息:username=dee&age=28
同时 post.txt:
至此完成了 POST 请求和响应。