網(wǎng)絡編程一

網(wǎng)絡編程一

數(shù)據(jù)的傳輸

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

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

HTTP協(xié)議的概念

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

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

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

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

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

HTTP——請求包結(jié)構(gòu):請求頭、請求體

GET:url、請求頭

POST:url、請求頭、請求體

HTTP的響應包結(jié)構(gòu):響應頭、響應體

HTTP響應有個狀態(tài)碼,200為成功,404未找到頁面

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

響應頭中Content-Type表示響應體中數(shù)據(jù)的類型

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

NSURLSession的相關使用

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

session網(wǎng)絡會話

//1 URL (定位資源)

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

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

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

//4 task (任務)

//(1)解析錯誤

//(2)查看狀態(tài)碼

//(3)解析data數(shù)據(jù)

//(4)轉(zhuǎn)換成model

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

//5 resume (執(zhí)行任務)

[task resume];//resume:恢復

NSURLRequest

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

1、NSURLRequest用于存儲客戶端發(fā)送給服務器的數(shù)據(jù)包信息和請求設置

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

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

requestWithURL:url

cachePolicy:緩存策略

timeoutInterval:超時的時間

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

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

NSURLSessionConfiguration

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

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

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

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

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

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

//(1)使用默認的session

//NSURLSession *session = [NSURLSessionsharedSession];

//(2)自定義的session

/*

+defaultSessionConfiguration用于創(chuàng)建默認類型的Session對象

+ephemeralSessionConfiguration用于創(chuàng)建臨時類型的Session對象

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

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

*/

NSURLSessionConfiguration *config =[NSURLSessionConfiguration defaultSessionConfiguration];

//配置屬性

//配置緩存策略

config.requestCachePolicy =NSURLRequestUseProtocolCachePolicy;

//是否使用蜂窩數(shù)據(jù)

config.allowsCellularAccess = YES;

//...

[NSURLSession sessionWithConfiguration:config];

//task

//resume

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

//下載任務

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

最后編輯于
?著作權歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務。

相關閱讀更多精彩內(nèi)容

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

友情鏈接更多精彩內(nèi)容