iOS開發--HTTP協議

HTTP --> Hypertext Transfer Protocol,超文本傳輸協議

作用

1.規定客戶端和服務器之間的數據傳輸格式

2.讓客戶端和服務器能有效地進行數據溝通

相對其它協議(file、mailto、ftp)的優勢

簡單快速、靈活(容許傳輸任意類型的數據)

-------------------------------------------------

通信過程

1.請求(request):客戶端(client)向服務器請求數據

2.響應(respose):服務器(server)返回客戶端想要的數據


請求分析

關於請求頭裏Range的講解:Range

$ curl -I http://s0.cyberciti.org/images/misc/static/2012/11/ifdata-welcome-0.png

在終端輸入上面的語句,你可以查看到你想要獲取的資源路徑的相關情況。

HTTP協議規定:一個完整的由客戶端發給服務器的HTTP請求包含請求行、請求頭、請求體

請求行:包含請求方法請求資源路徑HTTP協議版本

GET/MJServer/resources/images/1.jpgHTTP/1.1  

請求頭:包含了對客戶端的環境描述、客戶端請求的主機地址等客戶端信息

Range:bytes = 0-100//客戶端想要從服務器索取的數據範圍

Host:192.168.1.105:8080//客戶端想訪問的服務器的主機地址

User-Agent:客戶端的類型,客戶端的軟件環境

Accept:客戶端能夠接收的數據類型

Accept-Language:客戶端的語言環境

Accept-Encoding:客戶端支持的數據壓縮格式

請求體:客戶端發給服務器的具體數據,比如文件數據

響應分析

HTTP協議規定:一個完整的HTTP響應包含狀態行、響應頭、實體內容

狀態行:包含了HTTP協議的版本狀態碼狀態英文名稱

HTTP/1.1 200  OK

響應頭:包含了對服務器和返回數據的描述

Server:服務器的類型

Content-Type:返回數據的類型

Content-Length:返回數據的長度

Date:響應時間

實體內容:服務器返回給客戶端的具體數據,比如文件數據

說明:狀態碼200對應的英文名稱是OK,中文描述是請求成功,比較常見的是狀態碼404,Not Found,服務器無法根據請求找到資源


-------------------------------------------------

請求方法分析

在HTTP/1.1協議中,定義了8種發送請求的方法:

GET(查)、POST(改)、OPTIONS、HEAD、PUT(增)、DELETE(刪)、TRACE、CONNECT、PATCH

最常用的是GET、POST(利用這兩種方法可以實現增刪功能)

要想使用GET和POST請求跟服務器進行交互,得先了解一個概念:參數就是傳遞給服務器的具體數據,比如登錄時的帳號、密碼

GET和POST對比:GET和POST的主要區別表現在數據傳遞上

GET

在請求URL後面以?的形式跟上發給服務器的參數,多個參數之間用&隔開,比如http://ww.test.com/login?username=123&pwd=234&type=JSON

注意:由於瀏覽器和服務器對URL長度有限制,因此在URL後面附帶的參數是有限制的,通常不能超過1KB

POST

發給服務器的參數全部放在請求體中

理論上,POST傳遞的數據量沒有限制(具體還得看服務器的處理能力)

iOS中發送HTTP請求的方案

在iOS中,常見的發送HTTP請求(GET和POST)的解決方案有

(1)蘋果原生(自帶)

NSURLConnection:用法簡單,最古老最經典最直接的一種方案

NSURLSession:iOS 7新出的技術,功能比NSURLConnection更加強大

CFNetwork:NSURL*的底層,純C語言

(2)第三方框架

ASIHttpRequest:外號“HTTP終結者”,功能極其強大,可惜早已停止更新

AFNetworking:簡單易用,提供了基本夠用的常用功能

建議

爲了提高開發效率,企業開發用的基本是第三方框架


發佈了34 篇原創文章 · 獲贊 0 · 訪問量 2萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章