網絡編程一

網絡編程一

數據的傳輸

1、服務器的數據是分成一個個單個的數據包傳入客戶端

2、客戶端與服務器做數據傳輸,數據必須約定使用同一種格式

HTTP協議的概念

1、全稱“超文本傳輸協議”,瀏覽器和服務器之間的通信規則

2、HTTP協議永遠都是客戶端發起請求,服務器回送響應

3、客戶端發送一個HTTP請求,是向服務器提交了一個HTTP請求包

4、服務器收到請求之后,向客戶端回應一個HTTP響應包

HTTP的請求方式:GET請求和POST請求

HTTP——請求包結構:請求頭、請求體

GET:url、請求頭

POST:url、請求頭、請求體

HTTP的響應包結構:響應頭、響應體

HTTP響應有個狀態碼,200為成功,404未找到頁面

數據格式:JSON(主要)、XML

響應頭中Content-Type表示響應體中數據的類型

主要類型:text/html、application/json、text/json、text/xml、image/jpeg

NSURLSession的相關使用

(可以參考代碼:UI學習—-UI高級—-07網絡編程—-代碼—-01)

session網絡會話

//1 URL (定位資源)

//2 URLRequest (配置請求:url請求頭[請求體])

//請求方式:默認是get請求

//3 session (會話)<默認發起的是異步的網絡請求>

//4 task (任務)

//(1)解析錯誤

//(2)查看狀態碼

//(3)解析data數據

//(4)轉換成model

//(5)顯示在UI界面上

//5 resume (執行任務)

[task resume];//resume:恢復

NSURLRequest

(可以參考代碼:UI學習—-UI高級—-07網絡編程—-代碼—-02)

1、NSURLRequest用于存儲客戶端發送給服務器的數據包信息和請求設置

2、NSURLRequest只有很少的基本設置選項,我大部分使用其子類:NSMutableURLRequest

3、NSURLRequest (url請求頭請求體[post]請求方式緩存策略...)

requestWithURL:url

cachePolicy:緩存策略

timeoutInterval:超時的時間

{NSURLRequestUseProtocolCachePolicy:默認的協議緩存策略(首先判斷是否有緩存,如果緩存沒有,直接從服務器獲取;如果有緩存,根據響應中的cache-control中的一個字段判斷,詢問服務器數據是否有更新,如果有更新,重新請求服務器)}

//NSURLRequest *request = [NSURLRequest requestWithURL:urlcachePolicy:NSURLRequestUseProtocolCachePolicy timeoutInterval:120];

NSURLSessionConfiguration

1、一個Session可以發起的多個網絡請求任務(Task)

2、三種類型的任務(Task):

2.1數據任務:數據任務擅長處理小且頻繁的應用程序與服務器之間的請求,例如:請求JSON數據,因為數據任務不會將數據存儲到磁盤文件中,所以不支持后臺Session

2.2下載任務:以文件的形式接收數據,可以在程序沒有運行時進行后臺下載

2.3上傳任務:以文件的形式發送數據,可以在程序沒有運行時進行后臺上傳

3、session(可以參考代碼:UI學習—-UI高級—-07網絡編程—-代碼—-03)

//(1)使用默認的session

//NSURLSession *session = [NSURLSessionsharedSession];

//(2)自定義的session

/*

+defaultSessionConfiguration用于創建默認類型的Session對象

+ephemeralSessionConfiguration用于創建臨時類型的Session對象

+backgroundSessionConfiguration:(NSString*)identifier用于創建后臺Session對象

identifier:作用標示后臺的session,最好和App的bundle id相同

*/

NSURLSessionConfiguration *config =[NSURLSessionConfiguration defaultSessionConfiguration];

//配置屬性

//配置緩存策略

config.requestCachePolicy =NSURLRequestUseProtocolCachePolicy;

//是否使用蜂窩數據

config.allowsCellularAccess = YES;

//...

[NSURLSession sessionWithConfiguration:config];

//task

//resume

NSURLResponse(可以參考代碼:UI學習—-UI高級—-07網絡編程—-代碼)

//下載任務

NSURLSessionDownloadTask(可以參考代碼:UI學習—-UI高級—-07網絡編程—-代碼—04)

最后編輯于
?著作權歸作者所有,轉載或內容合作請聯系作者
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發布,文章內容僅代表作者本人觀點,簡書系信息發布平臺,僅提供信息存儲服務。

推薦閱讀更多精彩內容

  • 一. 網絡編程基礎 在移動互聯網時代,幾乎所有應用都需要用到網絡,只有通過網絡跟外界進行數據交互、數據更新,應用才...
    xx_cc閱讀 19,858評論 12 162
  • Spring Cloud為開發人員提供了快速構建分布式系統中一些常見模式的工具(例如配置管理,服務發現,斷路器,智...
    卡卡羅2017閱讀 134,881評論 18 139
  • iOS網絡編程讀書筆記 Facade Tester客戶端門面模式的實例(被動版本化) 被動版本化,所以硬編碼URL...
    melouverrr閱讀 1,626評論 3 7
  • 一、網絡編程的重要性 移動網絡應用 = 良好的UI + 良好的用戶體驗 + 實時更新的數據 在移動互聯網時代,移動...
    M_慕宸閱讀 2,370評論 1 19
  • 前言 這篇文章是這個系列的開篇,作為移動開發者,開發的應用不免會對網絡進行訪問,雖然現在已經有很多的開源庫幫助我們...
    劉望舒閱讀 1,547評論 2 18