1、Post請求參數類型說明
在Post請求中,更重要的是參數類型。不同請求的參數形式是不一樣的,在JMeter中的存在形式也是不一樣的。
Post請求的數據類型包括:
form-data
:以鍵值對的方式提交數據。
對於一段utf8編碼的字節的數據,直接將utf8編碼字節的拼接到請求體中,在本地有多少字節實際就發送多少字節,極大提高了效率,適合傳輸長字節。
因此在傳很長的字節(如文件)時應用multipart/form-data
格式。
總結:- 不對提交的表單數據進行字符編碼。
- 在使用包含文件上傳控件的表單時,推薦使用該值。
- 可以上傳鍵值對,也可以上傳文件。
- 可以上傳多個文件。
x-www-form-urlencoded
:會將表單內的數據轉換為鍵值對,而且鍵值對都是通過&間隔分開的。當需要模擬表單上傳數據時,用此選項。
它是Post提交的默認格式,在發送數據前編碼所有字符,采用ascii字符編碼,將非ascii字符做百分號編碼,所以對於非ascii字符傳輸效率就很低了。
但此表單不能上傳文件,只能是文本格式。
總結:
同樣使用URLencode轉碼,Post請求方式跟Get請求方式的區別在於:- Get請求方式把轉換、拼接完的字符串用
?
直接與表單的action連接作為URL使用,所以請求體里沒有數據。 - Post請求方式把轉換、拼接后的字符串放在了請求體里,不會在瀏覽器的地址欄顯示,因而更安全一些。
- Get請求方式把轉換、拼接完的字符串用
raw
可以上傳任意格式的文本類型數據,文本不做任何修飾傳到服務端,可以上傳txt
,JavaScript
,json
,xml
,html
等格式的數據。
其實主要的還是傳遞json格式的數據,當后端要求json數據格式的時候,就要使用此種格式來測試。binary
相當於Content-Type:application/octet-stream
,只可以上傳二級制數據,通常用來上傳文件,但一次只能上傳一個文件
2、用於演示的項目說明
Httpbin
是一個使用Python + Flask
編寫的HTTP Request & Response Service
項目,該服務主要用於測試 HTTP庫,你可以向他發送請求,然后他會按照指定的規則將你的請求返回(查看你所發送請求中的信息)。
Httpbin
支持HTTP/HTTPS
請求,支持所有的HTTP動詞,能測試HTTP請求和響應的各種信息,比如 cookie
、ip
、headers
和登錄驗證等。
Httpbin
接口地址:http://httpbin.org/
提示:按照規則請求
http://httpbin.org/
,會返回發送請求報文的完整內容。具體可查看https://www.cnblogs.com/liuyuelinfighting/p/14788860.html文章,有詳細說明。
3、發送Post請求示例
(1)測試計划內包含的元件
元件操作步驟:
- 創建測試計划。
- 創建線程組:
選中“測試計划”右鍵 —> 添加 —> 線程(用戶) —> 線程組
。 - 在線程組里面,添加取樣器“HTTP請求”組件:
選中“線程組”右鍵 —> 添加 —> 取樣器 —> HTTP請求
。 - 在線程組里面,添加監聽器“察看結果樹”組件:查看結果,
選中“線程組”右鍵 —> 添加 —> 監聽器 —> 察看結果樹
。
最終測試計划中的元件如下:
點擊運行按鈕,會提示你先保存該腳本,腳本保存完成后會直接自動運行該腳本。
(2)請求參數類型為x-www-form-urlencoded
x-www-form-urlencoded
格式數據是Post請求的默認數據格式。
在JMeter界面中的參數選項頁直接添加參數,發送Post請求的時候,就發送的是x-www-form-urlencoded
格式的數據。
我們請求發送后,我們在察看結果樹中查看請求頭和請求體中的數據。
請求頭:我們可以看到下圖中,請求的Content-Type
為application/x-www-form-urlencoded
。
請求體:我們可以看到請求體中的參數格式。
當然我們也可以使用Fiddler工具進行查看,整體效果更直觀一些,如下圖:
4、請求參數form-data
格式數據
發送form-data
格式的參數,只比發送x-www-form-urlencoded
格式的參數多一步,就是勾選上對POST使用multipart/form-data
選項。
如下圖:
請求發送后,在察看結果樹中查看請求頭和請求體中的數據。
請求頭:我們可以看到下圖中,請求的Content-Type
為multipart/form-data
。
請求體:我們可以看到請求體中的參數格式。
當然我們也可以使用Fiddler工具進行查看,整體效果更直觀一些,如下圖:
5、總結
通過上面兩個Post請求,可以十分清晰的看出application/x-www-form-urlencoded
參數格式和multipart/form-data
參數格式的區別。
而我們在日常工作中,需要按照接口文檔的要求,來指定Post請求中參數的格式即可。
說明:
- 關於Post參數類型,在我Postman部分的內容中講的比較詳細,可以互相對照着看。
- 關於使用JMeter發送Json格式的數據,在后邊配置元件中講解。