ASIHTTPRequest異步請求

咱們運行程序,若是網速很慢,查詢的時候會一直黑屏,直到請求結束畫面纔出現,這樣用戶體驗很很差。所以同步請求通常只是在某個子線 程中使用,而不在主線程中使用。異步請求的用戶體驗要比同步請求好,所以通常狀況下異步請求用的不少。等待過程當中在狀態欄上會出現網絡等待指示器的經典旋 轉小圖標,而使用ASIHTTPRequest異步請求就實現這些效果,不用本身額外編寫代碼。php

5

ASIHTTPRequest和ASIFormDataRequest兩個請求類均可以發送異步請求,ASIFormDataRequest繼承了 ASIHTTPRequest異步請求方法,因此咱們重點介紹ASIHTTPRequest的異步請求。異步請求後經過回調委託對象的方 法:requestFinished:和requestFailed:實現。修改主視圖控制器MasterViewController.m的 startRequest方法以下:ios

<span style="font-size:18px;color:#ff6600;"><strong>-(void)startRequest

{

NSString *strURL = [[NSString alloc] initWithFormat:

@」http://iosbook3/mynotes/webservice.php?email=%@&type=%@&action=%@」,@」<你的iosbook1.com用戶郵箱>」,@」JSON」,@」query」];

NSURL *url = [NSURL URLWithString:[strURL URLEncodedString]];

__weak ASIHTTPRequest *request = [ASIHTTPRequest requestWithURL:url];        

[request setCompletionBlock:^{                                           

NSData *data  = [request responseData];                               

NSDictionary *resDict = [NSJSONSerialization JSONObjectWithData:data

options:NSJSONReadingAllowFragments error:nil];

[self reloadView:resDict];

}];

 

[request setFailedBlock:^{                                               

NSError *error = [request error];

NSLog(@」%@」, [error localizedDescription]);

}];

[request startAsynchronous];

}</strong></span>
相關文章
相關標籤/搜索