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:簡單易用,提供了基本夠用的常用功能
建議:
爲了提高開發效率,企業開發用的基本是第三方框架