大部分應用程序都或多或少會牽扯到網絡開發,例如說新浪微博、微信等,這些應用本身可能采用iOS開發,但是所有的數據支撐都是基於後台網絡服務器的。如今,網絡編程越來越普遍,孤立的應用通常是沒有生命力的。今天就會給大家介紹這部分內容:
Web請求和響應 使用代理方法 簡化請求方法 圖片緩存 擴展--文件分段下載 擴展--文件上傳 NSURLSession 數據請求 文件上傳 文件下載 會話 UIWebView 浏覽器實現 UIWebView與頁面交互 網絡狀態做過Web開發的朋友應該很清楚,Http是無連接的請求。每個請求request服務器都有一個對應的響應response,無論是asp.net、jsp、php都是基於這種機制開發的。
在Web開發中主要的請求方法有如下幾種:
GET請求:get是獲取數據的意思,數據以明文在URL中傳遞,受限於URL長度,所以傳輸數據量比較小。 POST請求:post是向服務器提交數據的意思,提交的數據以實際內容形式存放到消息頭中進行傳遞,無法在浏覽器url中查看到,大小沒有限制。 HEAD請求:請求頭信息,並不返回請求數據體,而只返回請求頭信息,常用用於在文件下載中取得文件大小、類型等信息。根據響應數據大小不同可能會多次執行- (void)connection:(NSURLConnection *)connection didReceiveData:(NSData *)data方法。 URL中不能出現中文(例如上面使用GET傳參數時,file參數就可能是中文),需要對URL進行編碼,否則會出錯。application/x-www-form-urlencoded:默認值,發送前對所有發送數據進行url編碼,支持浏覽器訪問,通常文本內容提交常用這種方式。 multipart/form-data:多部分表單數據,支持浏覽器訪問,不進行任何編碼,通常用於文件傳輸(此時傳遞的是二進制數據) 。 text/plain:普通文本數據類型,支持浏覽器訪問,發送前其中的空格替換為“+”,但是不對特殊字符編碼。 application/json:json數據類型,浏覽器訪問不支持 。 text/xml:xml數據類型,浏覽器訪問不支持。defaultSessionConfiguration
:進程內會話(默認會話),用硬盤來緩存數據。 ephemeralSessionConfiguration
:臨時的進程內會話(內存),不會將cookie、緩存儲存到本地,只會放到內存中,當應用程序退出後數據也會消失。 backgroundSessionConfiguration
:後台會話,相比默認會話,該會話會在後台開啟一個線程進行網絡數據處理。