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格式的資料,在後邊配置元件中講解。