URL的基本格式:協議://主機地址/路徑html
1.協議:不一樣的協議表明着不一樣的資源查找方式,資源傳輸方式瀏覽器
2.主機地址:存放着資源的主機(服務器)的IP地址(或是域名)安全
3.路徑:資源在主機中的具體位置服務器
URL中常見的協議:框架
發送HTTP請求的方法htm
在http/1.1協議中,定義GET,POST,HEAD,PUT,DELETE,TARCE,CONNECT,PATHCH這8種請求,不一樣的方法對資源有不一樣的操做方式ip
GET和POST的比較:主要區別表如今數據傳遞上ci
GET:1)在請求URL後面以?的形式跟上發給服務器的參數,多個參數之間用&隔開,好比http://www.test.com/login?username=123&pwd=234&type=JSON資源
2)因爲瀏覽器和服務器對URL長度有限制,所以在URL後面附帶的參數是有限的,一般不能超過1KB開發
POST:1)發給服務器的參數所有放在請求體中
2)理論上,POST傳遞的數據量沒有限制(具體害的看服務器的處理能力)
GET和POST的選擇
1.若是須要傳遞大量數據,好比文件上傳,只能用POST請求
2.GET的安全性比POST要差些,若是包含機密/敏感信息,建議用POST
3.若是僅僅是索取數據(數據查詢),建議使用GET
4.若是是增長,修改,刪除數據,建議使用POST
HTTP的通訊過程
1.請求
http協議規定:一個完整的由客戶端發個服務器的HTTP請求中包含如下內容
請求行:包含了請求方法,請求資源路徑,HTTP協議版本
GET /MJServer/resource/images/1.jpg HTTP/1.1
請求頭:包含了對客戶端的環境描述,客戶端請求的主機地址等信息
Host:192.168.1.105:8080
User-Agent:Mozilla/5.0(Macintosh;Intel Mac OS X 10.12) Firefox/30.0 //客戶端的類型.客戶端的軟件環境
Accept: text/html.*/* //客戶端所能接收的數據類型
Accept-Language: zh-cn //客戶端的語言環境
Accept-Encoding:gzip //客戶端支持的數據壓縮格式
2.響應
一個完整的響應包含如下內容
狀態行:包含了HTTP協議版本,狀態碼,狀態英文名稱
HTTP/1.1 200 OK
響應頭:包含了對服務器的描述,對返回數據的描述
Server:Apache-Coyote/1.1 //服務器類型
Content-Type: image/JPEG //返回數據的類型
Content-Length:56811 //返回數據的長度
Date: Mon,23 Jun 2014 12:54:52 GMT //響應的時間
實體內容:服務器返回給客戶端的具體數據,好比文件數據
在iOS中,常見的發送HTTP請求的方案有
1.蘋果原生(自帶)
NSURLConnection:用法簡單,最古老最經典最直接的一種方案
NSURLSession:iOS7新出的技術,功能比NSURLConnection更增強大
CFNetwork:NSURL*的底層,純C語言
2.第三方框架
ASIHTTPRequest:外號"HTTP終結者",功能及其強大,惋惜早已中止更新
AFNetworking:簡單易用,提供了基本夠用的經常使用功能,維護和使用者多
建議:爲了提供開發效率,企業開出用的基本是第三方框架
常見響應嗎
200 :OK //請求成功
400 :Bad Request //客戶端請求的語法錯誤,服務器沒法解析
404:Not Found //服務器沒法根據客戶端的請求找到資源
500: Internal Server Error //服務器內部錯誤,沒法完成請求