HTTP Request 的結(jié)構(gòu)被稱作“first line”的第一行包含三個(gè)部分:
剩下的部分每行都是一個(gè)“Name:Value”對(duì)。它們包含了各式各樣關(guān)于請(qǐng)求和你瀏覽器的信息。例如”User-Agent“就表明了你瀏覽器版本和你所用的操作系統(tǒng)?!盇ccept-Encoding“會(huì)告訴服務(wù)器你的瀏覽可以接受類似gzip的壓縮輸出。 這些headers大部分都是可選的。HTTP 請(qǐng)求甚至可以被精簡(jiǎn)成這樣子:
并且你仍舊可以從服務(wù)器收到有效的響應(yīng)。 請(qǐng)求類型三種最常見(jiàn)的請(qǐng)求類型是:GET,POST 和 HEAD ,從html的編寫(xiě)過(guò)程中你可能已經(jīng)熟悉了前兩種。 GET:獲取一個(gè)文檔大部分被傳輸?shù)綖g覽器的html,images,js,css, … 都是通過(guò)GET方法發(fā)出請(qǐng)求的。它是獲取數(shù)據(jù)的主要方法。 例如,要獲取Nettuts+ 的文章,http request的第一行通??雌饋?lái)是這樣的:
一旦html加載完成,瀏覽器將會(huì)發(fā)送GET 請(qǐng)求去獲取圖片,就像下面這樣:
表單也可以通過(guò)GET方法發(fā)送,下面是個(gè)例子:
當(dāng)這個(gè)表單被提交時(shí),HTTP request 就會(huì)像這樣:
你可以將表單輸入通過(guò)附加進(jìn)查詢字符串的方式發(fā)送至服務(wù)器。 POST:發(fā)送數(shù)據(jù)至服務(wù)器盡管你可以通過(guò)GET方法將數(shù)據(jù)附加到url中傳送給服務(wù)器,但在很多情況下使用POST發(fā)送數(shù)據(jù)給服務(wù)器更加合適。通過(guò)GET發(fā)送大量數(shù)據(jù)是不現(xiàn)實(shí)的,它有一定的局限性。 用POST請(qǐng)求來(lái)發(fā)送表單數(shù)據(jù)是普遍的做法。我們來(lái)吧上面的例子改造成使用POST方式:
提交這個(gè)表單會(huì)創(chuàng)建一個(gè)如下的HTTP 請(qǐng)求:
這里有三個(gè)需要注意的地方:
POST方式的請(qǐng)求也可用在AJAX,應(yīng)用程序,cURL … 之上。并且所有的文件上傳表單都被要求使用POST方式。 HEAD:接收頭部信息HEAD和GET很相似,只不過(guò)HEAD不接受HTTP響應(yīng)的內(nèi)容部分。當(dāng)你發(fā)送了一個(gè)HEAD請(qǐng)求,那就意味著你只對(duì)HTTP頭部感興趣,而不是文檔本身。 這個(gè)方法可以讓瀏覽器判斷頁(yè)面是否被修改過(guò),從而控制緩存。也可判斷所請(qǐng)求的文檔是否存在。 例如,假如你的網(wǎng)站上有很多鏈接,那么你就可以簡(jiǎn)單的給他們分別發(fā)送HEAD請(qǐng)求來(lái)判斷是否存在死鏈,這比使用GET要快很多。 |
|
來(lái)自: 流曲頻陽(yáng) > 《JAVA學(xué)習(xí)》