『動善時』JMeter基礎 — 14、使用JMeter傳送Post請求

繁華似錦Fighting發表於2021-05-21

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請求方式把轉換、拼接後的字串放在了請求體裡,不會在瀏覽器的位址列顯示,因而更安全一些。
  • raw
    可以上傳任意格式的文字型別資料,文字不做任何修飾傳到服務端,可以上傳txtJavaScriptjsonxmlhtml等格式的資料。
    其實主要的還是傳遞json格式的資料,當後端要求json資料格式的時候,就要使用此種格式來測試。
  • binary
    相當於Content-Type:application/octet-stream,只可以上傳二級制資料,通常用來上傳檔案,但一次只能上傳一個檔案

2、用於演示的專案說明

Httpbin是一個使用Python + Flask編寫的HTTP Request & Response Service專案,該服務主要用於測試 HTTP庫,你可以向他傳送請求,然後他會按照指定的規則將你的請求返回(檢視你所傳送請求中的資訊)。

Httpbin支援HTTP/HTTPS請求,支援所有的HTTP動詞,能測試HTTP請求和響應的各種資訊,比如 cookieipheaders 和登入驗證等。

Httpbin介面地址:http://httpbin.org/

提示:按照規則請求http://httpbin.org/,會返回傳送請求報文的完整內容。

具體可檢視https://www.cnblogs.com/liuyuelinfighting/p/14788860.html文章,有詳細說明。

3、傳送Post請求示例

(1)測試計劃內包含的元件

元件操作步驟

  1. 建立測試計劃。
  2. 建立執行緒組:選中“測試計劃”右鍵 —> 新增 —> 執行緒(使用者) —> 執行緒組
  3. 線上程組裡面,新增取樣器“HTTP請求”元件:選中“執行緒組”右鍵 —> 新增 —> 取樣器 —> HTTP請求
  4. 線上程組裡面,新增監聽器“察看結果樹”元件:檢視結果,選中“執行緒組”右鍵 —> 新增 —> 監聽器 —> 察看結果樹

最終測試計劃中的元件如下:

image

點選執行按鈕,會提示你先儲存該指令碼,指令碼儲存完成後會直接自動執行該指令碼。

(2)請求引數型別為x-www-form-urlencoded

x-www-form-urlencoded格式資料是Post請求的預設資料格式。

在JMeter介面中的引數選項頁直接新增引數,傳送Post請求的時候,就傳送的是x-www-form-urlencoded格式的資料。

image

我們請求傳送後,我們在察看結果樹中檢視請求頭和請求體中的資料。

請求頭:我們可以看到下圖中,請求的Content-Typeapplication/x-www-form-urlencoded

image

請求體:我們可以看到請求體中的引數格式。

image

當然我們也可以使用Fiddler工具進行檢視,整體效果更直觀一些,如下圖:

image

4、請求引數form-data格式資料

傳送form-data格式的引數,只比傳送x-www-form-urlencoded格式的引數多一步,就是勾選上對POST使用multipart/form-data選項。

如下圖:

image

請求傳送後,在察看結果樹中檢視請求頭和請求體中的資料。

請求頭:我們可以看到下圖中,請求的Content-Typemultipart/form-data

image

請求體:我們可以看到請求體中的引數格式。

image

當然我們也可以使用Fiddler工具進行檢視,整體效果更直觀一些,如下圖:

image

5、總結

通過上面兩個Post請求,可以十分清晰的看出application/x-www-form-urlencoded引數格式和multipart/form-data引數格式的區別。

而我們在日常工作中,需要按照介面文件的要求,來指定Post請求中引數的格式即可。

說明:

  • 關於Post引數型別,在我Postman部分的內容中講的比較詳細,可以互相對照著看。
  • 關於使用JMeter傳送Json格式的資料,在後邊配置元件中講解。

相關文章