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


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格式的數據,在后邊配置元件中講解。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM