HTTP 筆記與總結(1 )Telnet 分別發送 HTTP GET 和 HTTP POST 請求

簡化的說: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 請求和響應。

相關文章
相關標籤/搜索