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