簡化的說:php
WebService = HTTP 協議 + XMLhtml
Rest = HTTP 協議 + Json瀏覽器
各類 API = HTTP 協議 + XML / Json 來實現服務器
HTTP 請求信息格式app
① 請求行工具
a.請求方法:GET,POST,PUT,DELETE,TRACE,OPTIONSpost
b.請求路徑(請求的資源,URL 的一部分)url
c.所用協議spa
② 請求頭信息調試
③ 請求主體信息
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 OK Date: Tue, 07 Jul 2015 13:04:57 GMT Server: Apache/2.2.21 (Win32) PHP/5.3.10 X-Powered-By: PHP/5.3.10 Content-Length: 5 Content-Type: text/html hello
其中,
響應行: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 <?php 2 /* 3 把接收到的 POST 數據寫入文本 4 要求用 telnet 來請求 5 */ 6 $str = implode(',', $_POST); 7 file_put_contents('post.txt', $str."\r\n", FILE_APPEND); 8 echo 'write success';
分析:HTTP 請求的格式
$方法 $路徑 $協議
請求頭信息
(空行)
請求主體信息
如圖:
注意:
頭信息裏要標明主體的長度 Content-Length 和 主體類型 Content-type:application/x-www-form-urlencoded
POST /php/http/2.php HTTP/1.1 Host: 127.0.0.17 Content-type: application/x-www-form-urlencoded Content-length:19 username=dee&age=28HTTP/1.1 200 OK Date: Tue, 07 Jul 2015 16:15:03 GMT Server: Apache/2.2.21 (Win32) PHP/5.3.10 X-Powered-By: PHP/5.3.10 Content-Length: 13 Content-Type: text/html write success 遺失對主機的鏈接。 C:\Users\Administrator>
其中:
主體信息:username=dee&age=28
同時 post.txt:
至此完成了 POST 請求和響應。