URL
什么的是URL伏穆?
- URL的全稱是統(tǒng)一資源定位符
- 通過一個URL,能在網(wǎng)上找到唯一的一個資源
- URL就是資源的地址纷纫、位置枕扫,互聯(lián)網(wǎng)上每個資源都有唯一的URL
URL的基本格式
協(xié)議://主機地址/資源路徑
http://www.baidu.com/qegqwyudhsuai.jpg
http://202.108.22.5/img/bdlogo.gif
- 協(xié)議:通信協(xié)議是通信時所遵守的規(guī)則,不同的協(xié)議辱魁,代表資源查找的方式烟瞧,資源傳輸方式
- 主機地址:存放資源的主機的IP地址
- 資源路徑:主機中資源存放的具體路徑
常見的網(wǎng)絡(luò)通信協(xié)議
- HTTP:超文本傳輸協(xié)議,訪問的是遠程的網(wǎng)絡(luò)資源染簇,是開發(fā)中
最常用
的網(wǎng)絡(luò)通訊協(xié)議 - file:訪問的是本地計算機上的資源参滴,格式是file:///(不用寫主機地址)
- FTP:訪問的是共享主機上面的資源。
HTTP協(xié)議簡介
- 不管是PC端還是移動客戶端锻弓,訪問遠程網(wǎng)絡(luò)資源用到的都是HTTP協(xié)議
HTTP協(xié)議的作用
- HTTP的全稱是超文本傳輸協(xié)議(HyperText Transfer Protocol)
- HTTP規(guī)定了
客戶端
和服務(wù)器
之間的數(shù)據(jù)傳輸格式 - HTTP讓
客戶端
和服務(wù)器
有效的進行數(shù)據(jù)溝通
HTTP的通信過程
- HTTP使用非持續(xù)連接砾赔,每次連接只處理一個
請求
,服務(wù)器對客戶端的請求
做出響應(yīng)
之后青灼,馬上斷開連接 -
請求
:客戶端向服務(wù)器索要數(shù)據(jù) -
響應(yīng)
:服務(wù)器返回客戶端響應(yīng)的數(shù)據(jù)
在iOS中發(fā)送HTTP請求的方案:
蘋果原生
- NSURLConnection:從iOS2.0之后就誕生的經(jīng)典方案暴心,但是對于文件下載和對Runloop的支持有些不足
- NSURLSession:iOS7.0之后推出的更強大更簡潔的網(wǎng)絡(luò)請求方案。
第三方框架
- ASIHTTPRequest:號稱HTTP終結(jié)者杂拨,非常強大专普,但是作者早已經(jīng)不更新了
- AFNetworking:目前最強大的網(wǎng)絡(luò)請求框架,github地址:https://github.com/AFNetworking/AFNetworking
發(fā)送HTTP請求的方法:
- HTTP定義的8種請求方法弹沽,常用的為POST何GET檀夹,這兩個具備其他6個的所有功能,開發(fā)中最為常用策橘。
- GET:
在請求URL后面以?的形式跟上發(fā)給服務(wù)器的參數(shù)炸渡,多個參數(shù)之間用&隔開,比如
http://ww.test.com/login?username=123&pwd=234&type=JSON
由于瀏覽器和服務(wù)器對URL長度有限制役纹,因此在URL后面附帶的參數(shù)是有限制的偶摔,通常不能超過1KB
- POST:
發(fā)給服務(wù)器的參數(shù)全部放在請求體中
理論上,POST傳遞的數(shù)據(jù)量沒有限制(具體還得看服務(wù)器的處理能力)
- GET和POST的選擇:
如果要傳遞大量數(shù)據(jù)促脉,比如文件上傳辰斋,只能用POST請求
GET的安全性比POST要差些,如果包含機密\敏感信息瘸味,建議用POST
如果僅僅是索取數(shù)據(jù)(數(shù)據(jù)查詢)宫仗,建議使用GET
如果是增加、修改旁仿、刪除數(shù)據(jù)藕夫,建議使用POST
HTTP的請求過程
- 請求行:
請求行包含了請求方法孽糖、請求資源路徑、HTTP協(xié)議版本
如:POST,/img/bdlogo.gif,HTTP1.1
- 請求頭:
請求頭包含了對客戶端的環(huán)境描述毅贮、客戶端請求的主機地址等信息
Host: 192.168.1.105:8080 // 客戶端想訪問的服務(wù)器主機地址
User-Agent: Mozilla/5.0 (Macintosh; Intel Mac OS X 10.9) Firefox/30.0
// 客戶端的類型办悟,客戶端的軟件環(huán)境
Accept: text/html, */* // 客戶端所能接收的數(shù)據(jù)類型
Accept-Language: zh-cn // 客戶端的語言環(huán)境
Accept-Encoding: gzip // 客戶端支持的數(shù)據(jù)壓縮格式
- 請求體
客戶端發(fā)給服務(wù)器的具體數(shù)據(jù),比如文件數(shù)據(jù)
HTTP的響應(yīng)過程
- 狀態(tài)行:
包含了HTTP
協(xié)議版本
滩褥、狀態(tài)碼
病蛉、狀態(tài)英文名稱
例如HTTP/1.1,200瑰煎,OK
- 響應(yīng)頭:
- 包括對服務(wù)器的描述铺然,對返回數(shù)據(jù)的描述
Server: Apache-Coyote/1.1 // 服務(wù)器的類型
Content-Type: image/jpeg // 返回數(shù)據(jù)的類型
Content-Length: 56811 // 返回數(shù)據(jù)的長度
Date: Mon, 23 Jun 2014 12:54:52 GMT // 響應(yīng)的時間