成人免费xxxxx在线视频软件_久久精品久久久_亚洲国产精品久久久_天天色天天色_亚洲人成一区_欧美一级欧美三级在线观看

iOS網絡編程異步GET方法請求

移動開發 iOS
iOS異步GET方法請求,將參數直接寫在訪問路徑上。操作簡單,不過容易被外界看到,安全性不高,地址最多255字節。

同步請求用戶體驗不好,并且可以在同步方法上實現異步,事實上iOS SDK也提供了異步請求的方法。異步請求會使用NSURLConnection委托協議NSURLConnectionDelegate。那么iOS異步GET方法請求怎么實現呢?

在請求不同階段 會回調委托對象方法。NSURLConnectionDelegate協議的方法有:

connection:didReceiveData: 請求成功,開始接收數據,如果數據量很多,它會被多次調用;

connection:didFailWithError: 加載數據出現異常;

connectionDidFinishLoading: 成功完成加載數據,在connection:didReceiveData方法之后執行;

使用異步請求的主視圖控制器MasterViewController.h代碼如下:

  1. #import <UIKit/UIKit.h> 
  2. #import “NSString+URLEncoding.h” 
  3. #import “NSNumber+Message.h” 
  4. @interface MasterViewController : UITableViewController <NSURLConnectionDelegate> 
  5. @property (strong, nonatomic) DetailViewController *detailViewController; 
  6. //保存數據列表 
  7. @property (nonatomic,strong) NSMutableArray* listData; 
  8. //接收從服務器返回數據。 
  9. @property (strong,nonatomic) NSMutableData *datas; 
  10. //重新加載表視圖 
  11. -(void)reloadView:(NSDictionary*)res; 
  12. //開始請求Web Service 
  13. -(void)startRequest; 
  14. @end 

上 面的代碼在MasterViewController定義中實現了NSURLConnectionDelegate協議。datas屬性用來存放從服務器 返回的數據,定義為可變類型,是為了從服務器加載數據過程中不斷地追加到這個datas中。MasterViewController.m代碼如下:

  1. /* 
  2.  開始請求Web Service 
  3. */ 
  4. -(void)startRequest { 
  5. NSString *strURL = [[NSString alloc] initWithFormat: 
  6. @”http://iosbook3/mynotes/webservice.php?email=%@&type=%@&action=%@”, 
  7. @”<你的iosbook1.com用戶郵箱>”,@”JSON”,@”query”]; 
  8. NSURL *url = [NSURL URLWithString:[strURL URLEncodedString]]; 
  9. NSURLRequest *request = [[NSURLRequest alloc] initWithURL:url]; 
  10. NSURLConnection *connection = [[NSURLConnection alloc] 
  11. initWithRequest:request 
  12. delegate:self]; 
  13. if (connection) { 
  14. _datas = [NSMutableData new]; 
  15. #pragma mark- NSURLConnection 回調方法 
  16. - (void)connection:(NSURLConnection *)connection didReceiveData:(NSData *)data { ① 
  17. [_datas appendData:data]; 
  18. -(void) connection:(NSURLConnection *)connection didFailWithError: (NSError *)error { 
  19. NSLog(@”%@”,[error localizedDescription]); 
  20. - (void) connectionDidFinishLoading: (NSURLConnection*) connection {         ② 
  21. NSLog(@”請求完成…”); 
  22. NSDictionary* dict = [NSJSONSerialization JSONObjectWithData:_datas 
  23. options:NSJSONReadingAllowFragments error:nil]; 
  24. [self reloadView:dict]; 

在第①行的connection:didReceiveData:方法中,通過[_datas appendData:data]語句不斷地接收服務器端返回的數據,理解這一點是非常重要的。如果加載成功就回調第②行的 connectionDidFinishLoading:方法,這個方法被回調也意味著這次請求的結束,這時候_datas中的數據是完整的,在這里把數據發送回表示層的視圖控制器。

經過以上步驟也就基本實現了iOS網絡編程異步GET方法請求。希望對大家有所幫助。

責任編輯:閆佳明 來源: cnblogs
相關推薦

2012-03-01 20:32:29

iOS

2009-08-21 10:17:14

C#異步網絡編程

2013-04-01 15:38:54

異步編程異步編程模型

2011-08-16 15:06:43

IOS開發異步請求

2013-01-07 10:44:00

JavaScriptjQueryJS

2015-08-06 13:33:22

PHPGETPOST

2015-10-27 11:06:51

PHPGETPOST

2013-04-01 15:25:41

異步編程異步EMP

2020-10-15 13:29:57

javascript

2011-08-03 10:39:06

IOS程序 HTTP 請求

2011-02-22 08:49:16

.NET同步異步

2011-02-22 09:09:21

.NETAsync CTP異步

2018-05-03 19:14:23

iOS開發框架API

2024-04-30 11:11:33

aiohttp模塊編程

2015-04-22 10:50:18

JavascriptJavascript異

2014-05-23 10:12:20

Javascript異步編程

2017-07-13 12:12:19

前端JavaScript異步編程

2016-09-07 20:43:36

Javascript異步編程

2020-09-24 10:09:01

GETPOST前端

2009-06-17 15:13:57

Java網絡功能編程方法
點贊
收藏

51CTO技術棧公眾號

主站蜘蛛池模板: 日韩在线免费 | 精品视频一区二区三区 | 日韩av一区二区在线观看 | 玖玖视频免费 | 亚洲三级在线 | 国产视频一区在线观看 | 99热首页| 亚洲人成人一区二区在线观看 | 激情网站在线观看 | 久久99精品久久久久久国产越南 | 久久久久国产精品一区 | 亚洲免费一区 | 久久精品一 | 久久久久久久一级 | 精品成人佐山爱一区二区 | 麻豆av一区二区三区久久 | 国产一区三区在线 | 久久精品小短片 | 国产精品无码专区在线观看 | 国产成人精品免费 | 亚洲国产精品99久久久久久久久 | 在线国产一区 | 国产美女一区二区 | 国产xxxx岁13xxxxhd | 狠狠色综合久久丁香婷婷 | 欧美一区二区三区精品免费 | 在线色网址| 亚洲美乳中文字幕 | 国产一区二区三区四 | 国产日韩一区二区 | 午夜久久久久久久久久一区二区 | 国产免费一区二区 | 亚洲国产成人在线观看 | www.久| 国产精品久久久久久久久久久免费看 | 综合久久亚洲 | 殴美黄色录像 | 91在线电影 | 国产精品1区 | 99久久免费精品国产男女高不卡 | 久久福利电影 |