Jmeter學習筆記(十六)——HTTP請求之content-type


一、HTTP請求Content-Type

常見的媒體格式類型如下:

  • text/html : HTML格式
  • text/plain :純文本格式
  • text/xml : XML格式
  • image/gif :gif圖片格式
  • image/jpeg :jpg圖片格式
  • image/png:png圖片格式

以application開頭的媒體格式類型:

  • application/xhtml+xml :XHTML格式
  • application/xml: XML數據格式
  • application/atom+xml :Atom XML聚合格式
  • application/json: JSON數據格式
  • application/pdf:pdf格式
  • application/msword : Word文檔格式
  • application/octet-stream : 二進制流數據(如常見的文件下載)
  • application/x-www-form-urlencoded : <form encType=””>中默認的encType,form表單數據被編碼為key/value格式發送到服務器(表單默認的提交數據的格式)

另外一種常見的媒體格式是上傳文件之時使用的:

  • multipart/form-data : 需要在表單中進行文件上傳時,就需要使用該格式

二、幾種常見的Content-Type類型

1、application/x-www-form-urlencoded

常用於原生的 form 表單提交,如果不指定content-type,默認使用此格式提交數據。

參數格式:key1=value1&key2=value2


2、content-type:multipart/form-data

另一個常見的 POST 數據提交的方式, Form 表單的 enctype 設置為multipart/form-data,它會將表單的數據處理為一條消息,以標簽為單元,用分隔符(這就是boundary的作用)分開。
由於這種方式將數據有很多部分,它既可以上傳鍵值對,也可以上傳文件,甚至多個文件。當上傳的字段是文件時,會有Content-Type來說明文件類型;Content-disposition,用來說明字段的一些信息。每部分都是以分隔符開始,緊接着是內容描述信息,然后是回車,最后是字段具體內容(字段、文本或二進制等)。如果傳輸的是文件,還要包含文件名和文件類型信息。消息主體最后以 分隔符標示結束。

常用於文件傳輸

發送的請求示例:

3、application/json

以Json格式編碼數據體,方便傳輸結構化數據(相比鍵值對),廣泛用於 ajax 請求

參數為json格式 

{

 "key1":"value1",

 "key2":"value2"

}


4、text/xml

以xml格式編碼數據體,是早期廣泛使用的格式

 

三、不同的content-type在jmeter中如何輸入參數

 1、application/x-www-form-urlencoded

參數可以在Parameters或Body Data里輸入,格式不同。這兩個參數輸入的tab頁只能使用一個,某一個有數據后不能切換到另一個。

示例如下

Parameters:

 

 Body Data:

 

 2、 content-type:application/json

(1)http請求頭管理里面設置content-type為application/json

(2)在http請求,Body Data中輸入json格式的參數

 

 

3、content-type:multipart/form-data

這種content-type的使用個人還沒完全會使用,下面內容摘自該文章:https://cloud.tencent.com/developer/news/367695

multipart/form-data主要用於post請求體中需要上傳文件的場景。網上很多帖子告訴大家怎么傳文件,卻忽略了當post請求體中既需要上傳文件,又需要傳一般的json格式參數這種場景,下面就以常用的三種接口測試方法介紹multipart/form-data格式請求的發送,希望可以減少大家將會踩到的坑(工具里的一些設置原理沒有搞得太清楚,但是以下的實現方式親測有效):

 

 

(1)填寫protocal、host、port、method、url、encoding等;

(2)勾選Use multipart/form-data for POST;

(3)parameter中填寫請求中除文件外的普通json格式參數;

 

(4)在Files Upload中填寫需要上傳的文件路徑、參數名、MIME Type(multipart/form-data);如果這里沒有需要上傳的文件,也可以不填,只發送parameters中的參數,前提是后端接口認為這個參數不是必傳參數;

(5)http頭信息中輸入cookie等信息,這里千萬不要輸入content-type為multipart/form-data,在請求那里已經勾選了Use multipart/form-data for POST(注:如果頭信息這里輸入了content-type為multipart/form-data,那么所有的參數都會被當成文件以二進制形式傳輸,我們parameter里的文本格式參數就不會被識別,接口會提示那些參數為空,這點絕對是萬年坑);

(6)接下來我們觀察下我們發送出的請求具體內容:

第1處:有些同學會有疑問說那文件格式的上傳是以二進制形式的,multipart/form-data格式的參數的分隔符boundary呢,jmeter會自動生成;

第2處:可以看到tmp.py這個文件名和前面的name是這個文件在當前接口中的參數名;

第3處:說明該文件content-type為multipart/form-data;

第4處:實際的文件內容在這里不會展示;

 

可以看到我們在parameter中輸入的非文件類型參數的content-type為text/plain;

 

 


免責聲明!

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



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