我們在瀏覽器的地址欄里輸入的網(wǎng)站地址叫做URL (Uniform Resource Locator,統(tǒng)一資源定位符)挪哄。就像每家每戶都有一個門牌地址一樣,每個網(wǎng)頁也都有一個Internet地址。當(dāng)你在瀏覽器的地址框中輸入一個URL或是單擊一個超級鏈接時,URL就確定了要瀏覽的地址虱咧。瀏覽器通過超文本傳輸協(xié)議(HTTP),將Web服務(wù)器上站點的網(wǎng)頁代碼提取出來沪蓬,并翻譯成漂亮的網(wǎng)頁彤钟。
超文本傳輸協(xié)議(HTTP,HyperText Transfer Protocol)是互聯(lián)網(wǎng)上應(yīng)用最為廣泛的一種網(wǎng)絡(luò)協(xié)議
HTTP是一個客戶端和服務(wù)器端請求和應(yīng)答的標(biāo)準(zhǔn)(TCP)跷叉∫荼ⅲ客戶端是終端用戶,服務(wù)器端是網(wǎng)站云挟。通過使用Web瀏覽器梆砸、網(wǎng)絡(luò)爬蟲或者其它的工具,客戶端發(fā)起一個到服務(wù)器上指定端口(默認(rèn)端口為80)的HTTP請求园欣。(我們稱這個客戶端)叫用戶代理(user agent)帖世。應(yīng)答的服務(wù)器上存儲著(一些)資源,比如HTML文件和圖像沸枯。(我們稱)這個應(yīng)答服務(wù)器為源服務(wù)器(origin server)
通常日矫,由HTTP客戶端發(fā)起一個請求,建立一個到服務(wù)器指定端口(默認(rèn)是80端口)的TCP連接绑榴。HTTP服務(wù)器則在那個端口監(jiān)聽客戶端發(fā)送過來的請求哪轿。一旦收到請求,服務(wù)器(向客戶端)發(fā)回一個狀態(tài)行翔怎,比如"HTTP/1.1 200 OK"窃诉,和(響應(yīng)的)消息,消息的消息體可能是請求的文件赤套、錯誤消息飘痛、或者其它一些信息。HTTP使用TCP而不是UDP的原因在于(打開)一個網(wǎng)頁必須傳送很多數(shù)據(jù)容握,而TCP協(xié)議提供傳輸控制宣脉,按順序組織數(shù)據(jù),和錯誤糾正唯沮。
HTTP報文由從客戶機到服務(wù)器的請求和從服務(wù)器到客戶機的響應(yīng)構(gòu)成脖旱。請求報文格式如下:
請求行 - 通用信息頭 - 請求頭 - 實體頭 - 報文主體
請求行以方法字段開始,后面分別是 URL 字段和 HTTP 協(xié)議版本字段介蛉,并以 CRLF 結(jié)尾萌庆。SP 是分隔符。除了在最后的 CRLF 序列中 CF 和 LF 是必需的之外币旧,其他都可以不要践险。有關(guān)通用信息頭,請求頭和實體頭方面的具體內(nèi)容可以參照相關(guān)文件。
應(yīng)答報文格式如下:
狀態(tài)行 - 通用信息頭 - 響應(yīng)頭 - 實體頭 - 報文主體
狀態(tài)碼元由3位數(shù)字組成巍虫,表示請求是否被理解或被滿足彭则。原因分析是對原文的狀態(tài)碼作簡短的描述,狀態(tài)碼用來支持自動操作占遥,而原因分析用來供用戶使用俯抖。客戶機無需用來檢查或顯示語法瓦胎。有關(guān)通用信息頭芬萍,響應(yīng)頭和實體頭方面的具體內(nèi)容可以參照相關(guān)文件。
請求行 如 POST /test/tupian/cm HTTP/1.1
分成三部分:
(1)POST:HTTP請求方式 (常用的請求方式有 get post put delete等)
(2)/test/tupian/cm:請求Web服務(wù)器的目錄地址(或者指令)
(3)HTTP/1.1: URI(Uniform Resource Identifier搔啊,統(tǒng)一資源標(biāo)識符)及其版本
HTTP請求在iOS中用NSURLRequest與NSMutableRequest表示柬祠;HTTP響應(yīng)用NSHTTPURLResponse表示。
Host: 目標(biāo)服務(wù)器的網(wǎng)絡(luò)地址
Accept: 讓服務(wù)端知道客戶端所能接收的數(shù)據(jù)類型负芋,如text/html /
Content-Type: body中的數(shù)據(jù)類型漫蛔,如application/json; charset=UTF-8
Accept-Language: 客戶端的語言環(huán)境,如zh-cn
Accept-Encoding: 客戶端支持的數(shù)據(jù)壓縮格式旧蛾,如gzip
User-Agent: 客戶端的軟件環(huán)境莽龟,我們可以更改該字段為自己客戶端的名字,比如QQ music v1.11锨天,比如瀏覽器Mozilla/5.0 (Macintosh; Intel Mac OS X 10_10_5) AppleWebKit/600.8.9 (KHTML, like Gecko) Maxthon/4.5.2
Connection: keep-alive轧房,該字段是從HTTP 1.1才開始有的,用來告訴服務(wù)端這是一個持久連接绍绘,“請服務(wù)端不要在發(fā)出響應(yīng)后立即斷開TCP連接”。關(guān)于該字段的更多解釋將在后面的HTTP版本簡介中展開迟赃。
Content-Length: body的長度陪拘,如果body為空則該字段值為0。該字段一般在POST請求中才會有纤壁。
POST請求的body請求體也有可能是空的左刽,因此POST中Content-Length也有可能為0
get post put delete 請求方式的特點
Content-Type 有哪些
(Uniform Resource Locator,統(tǒng)一資源定位符)
(HTTP酌媒,HyperText Transfer Protocol)
參考資料
http://baike.baidu.com/link?url=YFaT5g6-3GP1TLZXKl4YPTLH_LWn5NfWQBKGCOWEnDU7yvUQoXkzH9Exx6qwNKFkQz3jgVylVCicA-RIcSV62q
http://www.cocoachina.com/ios/20160329/15773.html
http://www.cnblogs.com/shangdahao/archive/2013/05/21/3087961.html
http://blog.csdn.net/runje/article/details/47720641
http://www.cocoachina.com/ios/20160325/15773.html