http是一種應用層協議,它通過tcp實現了可靠的資料傳輸,能夠保證該資料的完整性,正確性,而tcp對於資料傳輸控制的優點也能夠體現在http上,使得http的資料傳輸吞吐量,效率得到保證.
對於移動開發來說,網路應用基本上都是c/s構架,也就是客戶端/伺服器構架.客戶端通過向伺服器發起特定的請求,伺服器返回結果,客戶端解析結果,再將結果展示在ui上.客戶端與伺服器的互動如下圖所示.
詳細的互動流程有如下幾步:
1. 客戶端執行網路請求,從url中解析出伺服器的主機名
2. 將伺服器的主機名轉換成伺服器的ip位址
3. 將埠號從url中解析出來
4. 建立一條客戶端與web伺服器的tcp連線
5. 客戶端通過輸出流向伺服器傳送一條http請求
6. 伺服器向客戶端會送一條http響應報文
7. 客戶端從輸入流獲取報文
8. 客戶端解析報文,關閉連線
9. 客戶端將結果顯示在ui上
http協議提供了集中請求方式,每種請求方式都有不同的作用.被大家所熟知的請求方式有如下7種get,post,delete,put,head,trace,options.其中put,delete,post,get分別對應了資源的增刪查改4個功能,也是客戶端中運用最多的4個請求.下面我們分別來看看這幾個請求的作用.
get是最常用的方法,它的作用是獲取伺服器中的某個資源.下圖顯示了乙個例子,在這個例子中,客戶端用get方法發起了一次http請求,然後服務端將對應的資源返回給客戶端.
上圖中客戶端請求的資源是www.devtf.cn/articles路徑下的123.html,服務端將123.html返回給客戶端.需要注意的是,get請求的引數都需要放到請求的url中,第乙個引數之前有乙個」?」,引數的格式為: 引數名=引數值,引數之間通過」&」連線. 例如,我們在請求 www.devtf.cn/articles/123.html 時希望傳遞使用者名稱和使用者id兩個引數,那麼格式應該是這樣的: www.devtf.cn/articles/123.html?username=myname&userid=123 .
post方法起初是用來向伺服器傳遞資料的. 實際上,post請求通常會用來提交html的表單. 表單中填好的資料會被傳輸給伺服器,然後由伺服器對這些資料進行處理. 下圖顯示了乙個用post請求的執行流程.
與get從伺服器讀取資源相反,put方法會向伺服器寫入資源. 有些發布系統允許使用者建立web頁面,並用put直接向其傳輸到web伺服器中,如下圖所示
put方法的語義就是讓伺服器用請求的主體部分來建立乙個由所請求的url命名的新文件,如果那個url已經存在的話,就用這個資源來替代它. 例如, 在上圖的請求中會在www.devtf.cn的**根目錄下建立乙個new-art.txt的檔案,檔案內容為」this is file content」 .
顧名思義,delete方法所做的事情就是請伺服器刪除請求url所指定的資源. 但是,客戶端應用程式無法保證刪除操作一定會被執行. 因為,http規範允許伺服器在不通知客戶端的情況下撤銷請求. 下圖顯示了乙個delete方法例項.
delete方式與get請求一樣,引數都需要放在請求的url中.
head方法與get方法的行為很類似,但伺服器在響應中只返回首部. 不會返回實體的主體部分. 這就允許客戶端在未獲取實際資源的情況下,對資源的首部進行檢查. 使用head可以在不獲取資源的情況下了解資源的情況(比如,判斷其型別); 通過檢視響應中的狀態碼,看看某個物件是否存在; 通過檢視首部,測試資源是否被修改了. 伺服器開發者必須確保返回的首部與get請求所返回的首部完全相同. 遵循http/1.1規範,就必須實現head方法. 如下圖所示.
客戶端發起乙個請求時,這個請求可能要穿過防火牆,**,閘道器或其他一些應用程式. 每個中間節點都可能會修改原始的http請求. trace方法允許客戶端在最終將請求傳送給伺服器時,看看他變成了什麼樣子.
trace請求會在目的伺服器端發起乙個」環迴」診斷. 行程最後一站的伺服器會彈回一條trace響應,並在響應主體中攜帶它收到的原始請求報文. 這樣客戶端就可以檢視在所有中間http應用程式組成的請求/響應鏈上,原始報文是否以及如何被毀壞或修改過,如下圖所示.
trace方法主要用於診斷,也就是說,用於驗證請求是否如願穿過了請求/響應鏈. 它也是一種很好的工具,可以用來檢視**和其他應用程式對使用者請求所產生效果.
options方法請求web伺服器告知其支援的各種功能. 可以詢問伺服器通常支援哪些方法,或者對某些特殊資源支援哪些方法(有些伺服器可能只支援對一些特殊型別的物件使用特定的操作). 這對客戶端應用程式提供了一種手段,使其不用實際訪問那些資源就能判定訪問各種資源的最優方式. 下圖顯示了乙個使用options方法的請求.
HTTP網路請求原理
http是一種應用層協議,它通過tcp實現了可靠的資料傳輸,能夠保證資料的完整性 正確性,而tcp對於資料傳輸控制的優點也能夠體現在http上,使得http的資料傳輸吞吐量 效率得到保證。對於移動開發來說,網路應用基本上都是c s架構,也就是客戶端 伺服器架構。客戶端通過向伺服器發起特定的請求,伺服...
網路程式設計 HTTP請求
首先作為傳送端的客戶端在應用層 http 協議 發出乙個想看某個 web 頁面的 http 請求。接著,為了傳輸方便,在傳輸層 tcp 協議 把從應用層處收到的資料 http 請求報文 進行分割,並在各個報文上打上標記序號及埠號後 給網路層。在網路層 ip 協議 增加作為通訊目的地的 mac 位址後...
Http請求 iOS網路功能筆記(一)
構建http請求 1.1簡介 berners lee最終體案上有三個主要的創新 html http url。html定義了向文字新增樣式的一種方式 http定義了伺服器與客戶端之間傳輸資料的一種方式 url定義了再網路機器中定位唯一資源的方式。1.2 http請求與響應 對於計算機通訊來說,http...