自拍偷在线精品自拍偷,亚洲欧美中文日韩v在线观看不卡

iOS網(wǎng)絡(luò)編程異步GET方法請(qǐng)求

移動(dòng)開(kāi)發(fā) iOS
iOS異步GET方法請(qǐng)求,將參數(shù)直接寫(xiě)在訪問(wèn)路徑上。操作簡(jiǎn)單,不過(guò)容易被外界看到,安全性不高,地址最多255字節(jié)。

同步請(qǐng)求用戶體驗(yàn)不好,并且可以在同步方法上實(shí)現(xiàn)異步,事實(shí)上iOS SDK也提供了異步請(qǐng)求的方法。異步請(qǐng)求會(huì)使用NSURLConnection委托協(xié)議NSURLConnectionDelegate。那么iOS異步GET方法請(qǐng)求怎么實(shí)現(xiàn)呢?

在請(qǐng)求不同階段 會(huì)回調(diào)委托對(duì)象方法。NSURLConnectionDelegate協(xié)議的方法有:

connection:didReceiveData: 請(qǐng)求成功,開(kāi)始接收數(shù)據(jù),如果數(shù)據(jù)量很多,它會(huì)被多次調(diào)用;

connection:didFailWithError: 加載數(shù)據(jù)出現(xiàn)異常;

connectionDidFinishLoading: 成功完成加載數(shù)據(jù),在connection:didReceiveData方法之后執(zhí)行;

使用異步請(qǐng)求的主視圖控制器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. //保存數(shù)據(jù)列表 
  7. @property (nonatomic,strong) NSMutableArray* listData; 
  8. //接收從服務(wù)器返回?cái)?shù)據(jù)。 
  9. @property (strong,nonatomic) NSMutableData *datas; 
  10. //重新加載表視圖 
  11. -(void)reloadView:(NSDictionary*)res; 
  12. //開(kāi)始請(qǐng)求Web Service 
  13. -(void)startRequest; 
  14. @end 

上 面的代碼在MasterViewController定義中實(shí)現(xiàn)了NSURLConnectionDelegate協(xié)議。datas屬性用來(lái)存放從服務(wù)器 返回的數(shù)據(jù),定義為可變類型,是為了從服務(wù)器加載數(shù)據(jù)過(guò)程中不斷地追加到這個(gè)datas中。MasterViewController.m代碼如下:

  1. /* 
  2.  開(kāi)始請(qǐng)求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 回調(diào)方法 
  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(@”請(qǐng)求完成…”); 
  22. NSDictionary* dict = [NSJSONSerialization JSONObjectWithData:_datas 
  23. options:NSJSONReadingAllowFragments error:nil]; 
  24. [self reloadView:dict]; 

在第①行的connection:didReceiveData:方法中,通過(guò)[_datas appendData:data]語(yǔ)句不斷地接收服務(wù)器端返回的數(shù)據(jù),理解這一點(diǎn)是非常重要的。如果加載成功就回調(diào)第②行的 connectionDidFinishLoading:方法,這個(gè)方法被回調(diào)也意味著這次請(qǐng)求的結(jié)束,這時(shí)候_datas中的數(shù)據(jù)是完整的,在這里把數(shù)據(jù)發(fā)送回表示層的視圖控制器。

經(jīng)過(guò)以上步驟也就基本實(shí)現(xiàn)了iOS網(wǎng)絡(luò)編程異步GET方法請(qǐng)求。希望對(duì)大家有所幫助。

責(zé)任編輯:閆佳明 來(lái)源: cnblogs
相關(guān)推薦

2012-03-01 20:32:29

iOS

2009-08-21 10:17:14

C#異步網(wǎng)絡(luò)編程

2013-04-01 15:38:54

異步編程異步編程模型

2011-08-16 15:06:43

IOS開(kāi)發(fā)異步請(qǐng)求

2015-10-27 11:06:51

PHPGETPOST

2015-08-06 13:33:22

PHPGETPOST

2013-01-07 10:44:00

JavaScriptjQueryJS

2011-08-03 10:39:06

IOS程序 HTTP 請(qǐng)求

2020-10-15 13:29:57

javascript

2013-04-01 15:25:41

異步編程異步EMP

2011-02-22 09:09:21

.NETAsync CTP異步

2018-05-03 19:14:23

iOS開(kāi)發(fā)框架API

2011-02-22 08:49:16

.NET同步異步

2020-09-24 10:09:01

GETPOST前端

2024-04-30 11:11:33

aiohttp模塊編程

2016-09-07 20:43:36

Javascript異步編程

2017-07-13 12:12:19

前端JavaScript異步編程

2014-05-23 10:12:20

Javascript異步編程

2015-04-22 10:50:18

JavascriptJavascript異

2009-06-17 15:13:57

Java網(wǎng)絡(luò)功能編程方法
點(diǎn)贊
收藏

51CTO技術(shù)棧公眾號(hào)