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

1、HTTP請求Content-Typehtml

常見的媒體格式類型以下:ajax

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

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

  • 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 : 須要在表單中進行文件上傳時,就須要使用該格式

2、幾種常見的Content-Type類型服務器

一、application/x-www-form-urlencodedcookie

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

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


二、content-type:multipart/form-datapost

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

經常使用於文件傳輸

發送的請求示例:

三、application/json

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

參數爲json格式 

{

 "key1":"value1",

 "key2":"value2"

}


四、text/xml

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

 

3、不一樣的content-type在jmeter中如何輸入參數

 一、application/x-www-form-urlencoded

參數能夠在Parameters或Body Data裏輸入,格式不一樣。這兩個參數輸入的tab頁只能使用一個,某一個有數據後不能切換到另外一個。

示例以下

Parameters:

 

 Body Data:

 

 二、 content-type:application/json

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

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

 

 

三、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;

 

相關文章
相關標籤/搜索