1、Content-Type的定義
Content-Type(MediaType),即是Internet Media Type,互聯網媒體類型,也叫做MIME類型。在互聯網中有成百上千中不同的數據類型,HTTP在傳輸數據對象時會為他們打上稱為MIME的數據格式標簽,用於區分數據類型。
在HTTP協議消息頭中,使用Content-Type來表示請求和響應中的媒體類型信息。它用來告訴服務端如何處理請求的數據,以及告訴客戶端(一般是瀏覽器)如何解析響應的數據,比如顯示圖片,解析並展示html等等。
http協議是建立在tcp/ip協議之上的應用層協議,主要包括三個部分,狀態行,頭部信息,消息主體。對應一個http請求就是:請求行,請求頭,請求體。協議規定post提交的數據,必須包含在消息主體中entity-body中,但是協議並沒有規定數據使用什么編碼方式。開發者可以自己決定消息主體的格式。數據發送出去后,需要接收的服務端解析成功,一般服務端會根據content-type字段來獲取參數是怎么編碼的,然后對應去解碼。
2、Content-Type的格式:
Content-Type:type/subtype ;parameter
type:主類型,任意的字符串,如text,如果是*號代表所有;
subtype:子類型,任意的字符串,如html,如果是*號代表所有,用“/”與主類型隔開;
parameter:可選參數,如charset,boundary等。
例如:
Content-Type: text/html;
Content-Type: application/json;charset:utf-8;
Content-Type的種類繁多,具體可參考http://tool.oschina.net/commons
3、下面幾種類型是很常用,需要記憶的:
application/x-www-form-urlencoded
這種類型用於當HTTP將請求參數用key1=val1&key2=val2的方式組織,key 和 val 都進行了 URL 轉碼,放到body中(如put方法,多用於表單的提交)。注意如果是中文或者特殊字符,會自動進行URL的轉碼。
- 如請求參數:
- 生成的HTTP請求報文:可以看見中文是亂碼的,如果沒有指定UTF-8輸出,應該會進行轉義。
application/json
JSON 是一種輕量級的數據格式,以“key-value”對的方式組織的數據。這個使用這個類型,需要參數本身就是json格式的數據,參數會被直接放到請求實體里,不進行任何處理。服務端/客戶端會按json格式解析數據(約定好的情況下)
get請求下會將key-value解析出來,放到URL的參數里面。JSON 格式支持比鍵值對復雜得多的結構化數據,這一點也很有用。
- 請求消息
- 生成的HTTP 請求報文