0

我正在使用 ASIHTTPRequest 从 Web 服务中获取一些数据。

我正在使用循环发出请求。

问题是请求似乎不是异步进行的,因此我的活动指示器不工作。

ASIHTTPRequest 不是异步的吗?

或者我应该使用常规的 nsmutablerequest 来执行异步请求。

4

2 回答 2

2

您应该将您的请求放入下载队列中,即

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 线程上运行请求,因此您应该使用下载队列尝试它。

于 2010-01-09T11:42:16.310 回答
0

对于同步同步

  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];
}

还有更多的选择,比如队列等等

你可以参考http://allseeing-i.com/ASIHTTPRequest/How-to-use

于 2012-02-23T07:11:50.160 回答