ASIHTTPRequestを使用して、Webサービスからいくつかのデータをフェッチしています。
ループを使ってリクエストしています。
問題は、リクエストが非同期で行われているように見えないため、アクティビティインジケーターが機能していないことです。
ASIHTTPRequestが非同期ではないというのは本当ですか。
または、通常のnsmutablerequestを使用して非同期リクエストを実行する必要があります。
ASIHTTPRequestを使用して、Webサービスからいくつかのデータをフェッチしています。
ループを使ってリクエストしています。
問題は、リクエストが非同期で行われているように見えないため、アクティビティインジケーターが機能していないことです。
ASIHTTPRequestが非同期ではないというのは本当ですか。
または、通常のnsmutablerequestを使用して非同期リクエストを実行する必要があります。
リクエストをダウンロードキューに入れる必要があります。
ASIHTTPRequest *request = [[ASIHTTPRequest alloc] initWithURL:url];
[request setDelegate:self];
[request setDidFinishSelector:@selector(requestDone:)];
[request setDidFailSelector:@selector(requestWentWrong:)];
NSOperationQueue *queue = [[NSOperationQueue alloc] init];
[queue addOperation:request];
[request release];
ただ
[request startAsynchronous];
UIスレッドでリクエストを実行するため、ダウンロードキューで試してみてください。
同期同期の場合
NSURL *url = [NSURL URLWithString:@"http://allseeing-i.com"];
ASIHTTPRequest *request = [ASIHTTPRequest requestWithURL:url];
[request startSynchronous];
NSError *error = [request error];
if (!error) {
NSString *response = [request responseString];
}
非同期リクエストの作成
- (IBAction)grabURLInBackground:(id)sender
{
NSURL *url = [NSURL URLWithString:@"http://allseeing-i.com"];
ASIHTTPRequest *request = [ASIHTTPRequest requestWithURL:url];
[request setDelegate:self];
[request startAsynchronous];
}
- (void)requestFinished:(ASIHTTPRequest *)request
{
// Use when fetching text data
NSString *responseString = [request responseString];
// Use when fetching binary data
NSData *responseData = [request responseData];
}
- (void)requestFailed:(ASIHTTPRequest *)request
{
NSError *error = [request error];
}
そして、キューやその他多くのオプションがたくさんあります