URL(全稱:Uniform Resource Locator 統(tǒng)一資源定位符)
通過一個(gè)URL谷饿,能找到互聯(lián)網(wǎng)上唯一的一個(gè)資源
URL就是資源的地址蚊夫、位置兵罢,互聯(lián)網(wǎng)上的每一個(gè)資源都有自己唯一的URL
URL的基本格式:協(xié)議(http)://主機(jī)地址/路徑 ?(例如:http://www.58.com/img/logo.png)
? ? ? ? ? ? ? ? ? ? ? //協(xié)議:不同的協(xié)議逻族,代表著不同的資源查找方式础拨,資源傳輸方式
? ? ? ? ? ? ? ? ? ? ? //主機(jī)地址:存放資源的主機(jī)(服務(wù)器)的IP地址(域名)
? ? ? ? ? ? ? ? ? ? ? //路徑:資源在主機(jī)(服務(wù)器)中的具體位置
URL中常見的協(xié)議:
HTTP(超文本傳輸協(xié)議):訪問的是遠(yuǎn)程的網(wǎng)絡(luò)資源掠抬,格式是http:// (最常用)
file:訪問的是本地計(jì)算機(jī)上的資源吼野,格式是file://(不用加主機(jī)地址)
mailto: ?訪問的是電子郵件的地址,格式是mailto:
FTP:訪問的是共享主機(jī)的文件資源两波,格式是ftp://
HTTP:
http協(xié)議簡單瞳步,服務(wù)器程序規(guī)模小,因而通信速度很快腰奋,允許傳輸各種各樣的數(shù)據(jù)
http0.9和1.0版本屬于非持續(xù)連接单起,限制每次連接只處理一個(gè)請(qǐng)求,服務(wù)器對(duì)客戶端的請(qǐng)求做出響應(yīng)后劣坊,馬上斷開連接嘀倒,這種方式可以節(jié)省傳輸時(shí)間,而現(xiàn)在則使用1.1版本,屬于持續(xù)連接测蘑。
發(fā)送HTTP請(qǐng)求的方法:GET / POST (最常用)
GET:
在請(qǐng)求URL后面以灌危?的形式跟上發(fā)給服務(wù)器的參數(shù),多個(gè)參數(shù)之間用&隔開碳胳,例如:
http://www.test.com/login?username=123&pwd=234&type=JSON
由于瀏覽器和服務(wù)器對(duì)URL長度有限制勇蝙,因此在URL后面附帶的參數(shù)是有限制的,通常不能超過1KB
POST:
發(fā)給服務(wù)器的參數(shù)全部放在請(qǐng)求體中
理論上挨约,post請(qǐng)求的數(shù)據(jù)量是沒有限制的(具體還要看服務(wù)器的處理能力)
GET和POST的選擇:
如果要傳遞大量數(shù)據(jù)味混,比如文件上傳,只能用post請(qǐng)求
get的安全性比較差诫惭,包含機(jī)密或敏感信息翁锡,建議post請(qǐng)求
如果僅僅是索取數(shù)據(jù)(數(shù)據(jù)查詢),建議用get
如果是增加數(shù)據(jù)贝攒,修改盗誊,刪除數(shù)據(jù),建議用post
GET和POST區(qū)別:
1. get 是從服務(wù)器上獲取數(shù)據(jù)隘弊,post是向服務(wù)器傳送數(shù)據(jù)
2. get是把參數(shù)數(shù)據(jù)隊(duì)列加到提交表單的ACTION屬性所???的URL中哈踱,值和表單內(nèi)各個(gè)字段--對(duì)應(yīng),在URL中可以看到梨熙,post是通過HTTP post機(jī)制开镣,將表單內(nèi)各個(gè)字段與其內(nèi)容放置在HTML HEADER內(nèi)一起傳送到ACTION屬性所指的URL地址。用戶看不到這個(gè)過程咽扇。
3. 對(duì)于get方式邪财,服務(wù)器端用Request.QueryString獲取變量的值,對(duì)于post方式质欲,服務(wù)器端用Request.Form獲取提交的數(shù)據(jù)树埠。
4. get傳送的數(shù)據(jù)量較小,不能大于2KB嘶伟。post傳送的數(shù)據(jù)量較大怎憋,一般被默認(rèn)為不受限制,但理論上九昧,IIS4中最大量為80KB绊袋,IIS5中為100KB。
5. get安全性非常低铸鹰,post安全性較高癌别,但是執(zhí)行效率卻比post方法好。
建議:
1. get方式的安全性較post方式要差些蹋笼,包含機(jī)密信息的話展姐,建議用post數(shù)據(jù)提交方式
2. 在做數(shù)據(jù)查詢時(shí)躁垛,建議用get方式,而在數(shù)據(jù)添加诞仓,修改或刪除時(shí)缤苫,建議用post方式
iOS中發(fā)送HTTP請(qǐng)求的方案:
蘋果自帶:
NSURLConnection:用法簡單,最古老最直接最經(jīng)典的一種方案(坑比較多)
NSURLSession:功能比NSURLConnection更強(qiáng)大墅拭,蘋果目前比較推薦使用這種技術(shù)
CFNetWork:NSURL的底層,純C語言
第三方框架:
ASIHttpRequest:外號(hào)“HTTP終結(jié)者”涣狗,功能極其強(qiáng)大谍婉,可惜早已停止更新
AFNetWorking:簡單易用,提供了基本夠用常用的功能