人魔七七:
乙個http請求只要由三部分組成:請求行,請求頭,請求主體。請求行和請求頭是行文字用回車或者換行符分隔。在http用文字值使他們更容易構造,解析,和除錯。乙個空行,只是乙個回車/換行符組成的序列或只是乙個換行符,將請求頭從請求主體分離。
下面**片段包含乙個http請求例子關於搜尋的請求。
這個請求行是第一行的傳送資料到伺服器。這個請求行包含三個關鍵字資訊:http請求方法,請求url,和http版本。
請求方法只是乙個詞表明客戶端請求的行為。因為是區分大小寫,所以下面標準的請求都是大寫值。上面的例子請求是大寫的get。
get:從伺服器檢索內容或者實體在http術語。get請求通常不包含請求體,但是是被允許的。一些網路快取裝置僅僅get方式響應。get請求通常不會導致伺服器資料變化。
post:用客戶端提供的資料更新實體。乙個post請求通常在請求體中包含資訊,這些資訊在應用伺服器是可以被使用的。post請求被認為是非冪等性的,意味著如果多個請求被處理和僅僅乙個請求被處理結果是不一樣的。
head:檢索乙個響應的資料不用檢索整個響應的內容。這個方法通常被用來檢索伺服器最近有沒有資料更新而不是檢索整個內容。
put:新增乙個由客戶端提供的資料實體。乙個put請求通常在請求體包含伺服器用來建立新實體用的資訊。通常,put請求被認為是冪等性的,意味著請求可以反覆使用相同應用的結果。
delete:刪除乙個基於uri內容的實體或者由客戶端提供的請求體。delete請求通常在rest服務請求介面。
第二個關鍵字在請求行是uri,uri唯一標識請求的目標。如果請求用的是get方式,這個uri不含糊的指定內容來檢索目標伺服器。這個uri可能包含查詢引數,但是不能包含空格或者換行符。前面的**片段uri包含幾個查詢引數,每個用&分隔,注意uri不能包含協議,主機或者埠這是使用者經常提供的瀏覽器位址。這個客戶端用這個協議url一部分來決定怎麼連線伺服器。這個主機名字和埠通過客戶端在請求主機頭來提供。
這個請求行的最後乙個關鍵字指定http協議的版本。在之前http請求**例子指定版本是1.1。意味著伺服器應該希望客戶端提供頭和規則為http協議版本指定。
緊跟著這個請求行的是請求頭,給伺服器提供額外的元資料。這個元資料可能描述客戶端,將來描述請求或者從伺服器請求某種型別的響應。在每個請求中提供乙個或者多個請求頭。主機頭僅僅在http1.1版本需要。它提供被客戶端提供原始主機名字並且可能包含被原始請求url提供的埠值。乙個http伺服器可能為多個主機名字提供內容。主機頭 幫助http伺服器知道原始請求的主機。
儘管他用有狀態的tcp傳輸層,http被定義為無狀態的協議。這意味著http伺服器不保留任何資訊關於在將來的乙個請求。cookies被作為乙個方法來允許一些狀態資訊儲存到客戶端並且在將來的請求和伺服器通訊。
http請求頭下面是乙個可選的請求體。這個請求體是任意序列位元組被乙個空行從請求頭分隔。這個請求體必須遵守之前伺服器和客戶端協定好的資料編碼。對web伺服器這是用於web瀏覽器通常表單編碼的資料
但是對於手機應用通常是xml和json資料編碼。
注意:http允許客戶端和伺服器端中介新增刪除修改http請求頭。因此從應用向伺服器發出的請求可以攜帶新的請求頭修改或者刪除請求頭。
IOS程式設計之網路環境檢測
一 確認網路壞境狀態 1 新增原始檔和framework 1.1 新增reachability.h 和 reachability.m 檔案 1.2 新增 systemconfiguration.framework 框架 2 網路狀態 reachability.h中定義了三種網路狀態 typedef ...
讀書筆記 iOS 網路 HTTP 請求內容
一,get方法。從伺服器獲取一段內容,用http術語來說就是實體。get請求通常不包含請求體,不過也是可以包含的。有些網路快取設施只會快取get響應。get請求通常不會導致伺服器端的資料變化。二,post方法。使用客戶端提供的資料更新實體。post請求通常會在請求體中加入應用伺服器所需的資訊。pos...
iOS 網路請求
pragma mark 網路請求 方式 非同步 ibaction delegatebuttondidclicked uibutton sender 方法 客戶端收到伺服器的響應 pragma mark 客戶端收到伺服器的響應 void connection nsurlconnection conne...