中文字幕在线观看,亚洲а∨天堂久久精品9966,亚洲成a人片在线观看你懂的,亚洲av成人片无码网站,亚洲国产精品无码久久久五月天

ios網(wǎng)絡開發(fā) 同步下載和異步下載

2018-07-20    來源:open-open

容器云強勢上線!快速搭建集群,上萬Linux鏡像隨意使用

一、同步下載(交互不好,容易出現(xiàn)卡死現(xiàn)象,一般下載數(shù)據(jù)較小或有特定需求才使用)。  發(fā)送同步請求后,程序將停止用戶交互,直到服務器返回數(shù)據(jù)完成后,才進行下一步的操作。

  步驟:

1.創(chuàng)建NSURL

   NSURL *url = [[NSURL alloc] initWithString:@"http://www.baidu.com/"];

2.通過URL創(chuàng)建NSURLRequest

    NSURLRequest *request = [[NSURLRequest alloc] initWithURL:url cachePolicy:NSURLRequestUseProtocolCachePolicy timeoutInterval:15]; 

    cachePolicy 緩存協(xié)議是個枚舉類型:

 NSURLRequestUseProtocolCachePolicy 基礎策略

 NSURLRequestReloadIgnoringLocalCacheData 忽略本地緩存

 NSURLRequestReturnCacheDataElseLoad 首先使用緩存,如果沒有本地緩存,才從原地址下載

 NSURLRequestReturnCacheDataDontLoad 使用本地緩存,從不下載,如果本地沒有緩存,則請求失敗。此策略多用于離線操作

 NSURLRequestReloadIgnoringLocalAndRemoteCacheData 無視任何的緩存策略,無論是本地還是遠程,總是從原地址重新下載

 NSURLRequestReloadRevalidatingCacheData 如果本地緩存是有效的則不下載。其他任何情況都從原地址重新下載

  3.建立網(wǎng)絡連接NSURLConnection,同步請求數(shù)據(jù) 

   NSData *receivedData = (NSMutableData *)[NSURLConnection sendSynchronousRwquest:request returningResponse:&response error:&error];

 以上三步后,就需要將receivedData進行解析,一般是XML/JSON。 

 

二、異步下載 

    步驟: 

步驟前兩步和同步一樣,在第三步接收數(shù)據(jù)的時候與它有差別,需要用四個網(wǎng)絡連接代理方法來實現(xiàn)。

        1.創(chuàng)建NSURL

   NSURL *url = [[NSURL alloc] initWithString:@"http://www.baidu.com/"];

  2.通過URL創(chuàng)建NSURLRequest

    NSURLRequest *request = [[NSURLRequest alloc] initWithURL:url cachePolicy:NSURLRequestUseProtocolCachePolicy timeoutInterval:15]; 

3. 建立網(wǎng)絡連接NSURLConnection,并設置其代理

[NSURLConnection connetionWithRequest:request delegate:self];

需要實現(xiàn)的代理:

NSURLConnectionDataDelegate,NSURLConnectionDelegate

  用到的4個代理方法:

//接收服務器回應時這個方法被調用 

- (void)connetion:(NSURLConnetion *)connection didReceiveResponse:(NSURLResponse *)response 

{  

//初始化receiveData,用于存放服務器給的數(shù)據(jù) 

self.receivedData = [NSMutableData data]; 
} 

//接收到服務器傳輸數(shù)據(jù)的時候調用,此方法根據(jù)數(shù)據(jù)大小會執(zhí)行若干次

- (void)connection:(NSURLConnection *)connetion didReceiveData:(NSData *)data 

{

[self.receivedData appendData:data]; 

 }

//數(shù)據(jù)傳完之后調用此方法

- (void)connetionDidFinishLoading:(NSURLConneciton *)connetion 

{

//TODO 得到最終的receivedData 

 } 
  //網(wǎng)絡請求過程中,出現(xiàn)任何錯誤,如斷網(wǎng),連接超時等,會進入此方法

  - (void)connetion:(NSURLConnection *)connetion didFailWithError:(NSError *)error

  {

NSLog(@"%d@", [error localizedDescription]); 

} 


標簽: 服務器 網(wǎng)絡

版權申明:本站文章部分自網(wǎng)絡,如有侵權,請聯(lián)系:west999com@outlook.com
特別注意:本站所有轉載文章言論不代表本站觀點!
本站所提供的圖片等素材,版權歸原作者所有,如需使用,請與原作者聯(lián)系。

上一篇:數(shù)學表達式計算器

下一篇:python密碼生成器