HTTP
客戶端和服務(wù)器的語(yǔ)言不一樣啄刹,怎樣才能相互數(shù)據(jù)傳輸
- HTTP的協(xié)議作用,超文本傳輸協(xié)議颠锉,規(guī)定客戶端和服務(wù)器之間的數(shù)據(jù)傳輸格式
- 客戶端發(fā)送請(qǐng)求
- 服務(wù)器給出響應(yīng)
發(fā)送HTTP請(qǐng)求的方法
請(qǐng)求參數(shù):傳遞給服務(wù)器的具體數(shù)據(jù)(賬號(hào)拼卵、密碼)
- 最常用的是GET請(qǐng)求和POST請(qǐng)求
GET和POST的對(duì)比
- GET和POST的主要區(qū)別表現(xiàn)在數(shù)據(jù)傳遞上
- GET:在請(qǐng)求URL后面?的形式跟上發(fā)給服務(wù)器的參數(shù),多個(gè)參數(shù)之間用&隔開虏杰,比如http://localhost/login?username=apple&pwd=123&type=JSON
由于瀏覽器和服務(wù)器的URL的長(zhǎng)度有限制讥蟆,因此在URL后面附帶的參數(shù)是有限制的,通常不超過(guò)1kb - POST:發(fā)給服務(wù)器的參數(shù)全部放在請(qǐng)求體中
選擇GET和POST的建議
- 如果要傳遞大量的數(shù)據(jù)纺阔,比如文件上傳瘸彤,只能用POST
- GET請(qǐng)求的安全性不夠,完全的數(shù)據(jù)都是暴露出來(lái)的笛钝,如果是含機(jī)密和敏感信息
- 如果僅僅是索取數(shù)據(jù)(數(shù)據(jù)查詢)质况,建議用GET
- 如果用增加愕宋、刪除、修改數(shù)據(jù)结榄,建議用POST
iOS中發(fā)送HTTP請(qǐng)求的方案
- 蘋果原生(自帶)
- NSURLConnection:用法簡(jiǎn)單中贝,是古老經(jīng)典的最直接的一種方案【坑多】
- NSURLSession:功能比NSURLConnection更加強(qiáng)大,蘋果日前比較推薦使用
- CFNetWork:純C語(yǔ)言
- 第三方框架
- ASIHttpRequest:外號(hào)“HTTP終結(jié)者”臼朗,可是早已經(jīng)停止更新
- AFNetworking:簡(jiǎn)單易用邻寿,提供了基本夠用的常用功能,維護(hù)和使用者多
- NKNetworkKit:簡(jiǎn)答易用视哑,產(chǎn)自印度绣否,維護(hù)和使用者少
HTTP的通信過(guò)程-請(qǐng)求
- HTTP協(xié)議規(guī)定:一個(gè)完成的由客戶端發(fā)給服務(wù)器的HTTP請(qǐng)求中包含以下內(nèi)容
- 請(qǐng)求頭:包含了對(duì)客戶端的環(huán)境描述、客戶端請(qǐng)求信號(hào)
- 請(qǐng)求體:客戶端發(fā)給服務(wù)器的具體數(shù)據(jù)挡毅,比如文件數(shù)據(jù) POST請(qǐng)求才有
HTTP的通信過(guò)程-響應(yīng)
- 客戶端向服務(wù)器發(fā)送請(qǐng)求蒜撮,服務(wù)器應(yīng)當(dāng)做出響應(yīng),即返回?cái)?shù)據(jù)給客戶端
- HTTP協(xié)議規(guī)定:一個(gè)完整的HTTP響應(yīng)中包含以下內(nèi)容
- 響應(yīng)頭:包含了對(duì)服務(wù)器的描述跪呈,對(duì)返回?cái)?shù)據(jù)的描述
- 響應(yīng)體:服務(wù)器返回給客戶端的具體數(shù)據(jù)淀弹,比如文件數(shù)據(jù)