Iphone ASIHTTPRequestErrorDomain代码=4“;请求被取消了

Iphone ASIHTTPRequestErrorDomain代码=4“;请求被取消了,iphone,ios,ios4,asihttprequest,Iphone,Ios,Ios4,Asihttprequest,下面的函数没有从服务器下载内容,它给出了一个HttpRequestErrorDomain Code=4“请求被取消 此函数是从viewdidload调用的。但是相同的URL工作正常,它在-(void)downLoad:(id)sender event:(id)event函数中下载内容,但不在-(void)startDownload函数中。 请让我知道我的函数(((void)startDownload)中的问题/错误是什么 以下功能正常运行 -(void)downLoad:(id)sender e

下面的函数没有从服务器下载内容,它给出了一个HttpRequestErrorDomain Code=4“请求被取消

此函数是从viewdidload调用的。但是相同的URL工作正常,它在-(void)downLoad:(id)sender event:(id)event函数中下载内容,但不在-(void)startDownload函数中。

请让我知道我的函数(((void)startDownload)中的问题/错误是什么

以下功能正常运行

-(void)downLoad:(id)sender event:(id)event{

self.tblViewDownload.userInteractionEnabled = NO;

IsRequestCompleted = NO;

CGPoint touchPosition = [[[event allTouches] anyObject] locationInView:self.tblViewDownload];
NSIndexPath *indexPath = [self.tblViewDownload indexPathForRowAtPoint:touchPosition];
UITableViewCell *Cell = [self.tblViewDownload cellForRowAtIndexPath:indexPath];

progress = [[UIProgressView alloc]initWithProgressViewStyle:UIProgressViewStyleBar];
progress.frame = CGRectMake(65, 55, 210, 25);
progress.progress = 0.0;
[Cell.contentView addSubview:progress];

UIButton* button = (UIButton*)sender;
button.hidden=YES;

if(!self.networkQueue)
    self.networkQueue = [[[ASINetworkQueue alloc] init] autorelease];

[self.networkQueue cancelAllOperations];
[self.networkQueue setQueueDidFinishSelector:@selector(queueCompleted:)];
[self.networkQueue setShowAccurateProgress:YES];
[self.networkQueue setDownloadProgressDelegate:progress];

[self.networkQueue setDelegate:self];

NSDictionary *aDict =[self.myUrlArray objectAtIndex:[indexPath row]];
NSString *aImgUrl = [aDict objectForKey:@"IMG_URL"];
NSString *aVideoUrl = [aDict objectForKey:@"VIDEO_URL"];
NSString *aAudioUrl = [aDict objectForKey:@"AUDIO_URL"];

NSArray *aPoemArrayUrls = [NSArray arrayWithObjects:aImgUrl,aVideoUrl,aAudioUrl,nil];

for(NSString* urlString in aPoemArrayUrls)
{
    NSURL *url = [NSURL URLWithString:urlString];
    ASIHTTPRequest *downloadAFileRequest = [[ASIHTTPRequest requestWithURL:url]retain];
    NSString *Filename = [urlString lastPathComponent];
    NSLog(@"%@ filename",Filename);
    [downloadAFileRequest setUserInfo:[NSDictionary dictionaryWithObject:@"request1" forKey:@"name"]];
    [downloadAFileRequest setDownloadDestinationPath:[[NSHomeDirectory() stringByAppendingPathComponent:@"Documents"] stringByAppendingPathComponent:Filename]];
    [downloadAFileRequest setShouldContinueWhenAppEntersBackground:YES];
    [downloadAFileRequest setDelegate:self];
    [downloadAFileRequest setDidFinishSelector:@selector(requestDone:)];
    [downloadAFileRequest setDidFailSelector:@selector(requestWentWrong:)];
    [downloadAFileRequest setShowAccurateProgress:YES];

    [self.networkQueue addOperation:downloadAFileRequest];
    //----
}

[self.networkQueue go];

}
下面的函数不起作用,并给出HttpRequestErrorDomain Code=4“请求被取消”

-(void)startDownload{

if([self.myUrlArray count] > 0 ){

int count = [self.myUrlArray count];

int i = count - count;

NSLog(@"%d iiiiii",i);

NSIndexPath *myIP = [NSIndexPath indexPathForRow:i inSection:0];

UITableViewCell *Cell = [self.tblViewDownload cellForRowAtIndexPath:myIP];

progress = [[UIProgressView alloc]initWithProgressViewStyle:UIProgressViewStyleBar];
progress.frame = CGRectMake(65, 55, 210, 25);
progress.progress = 0.0;
progress.backgroundColor = [UIColor redColor];
[Cell.contentView addSubview:progress];

  if(!self.networkQueue)
      self.networkQueue = [[[ASINetworkQueue alloc] init] autorelease];

  [self.networkQueue cancelAllOperations];
  [self.networkQueue setQueueDidFinishSelector:@selector(queueCompleted:)];
  [self.networkQueue setShowAccurateProgress:YES];
  [self.networkQueue setDownloadProgressDelegate:progress];

  [self.networkQueue setDelegate:self];

  NSDictionary *aDict =[self.myUrlArray objectAtIndex:[myIP row]];
  NSString *aImgUrl = [aDict objectForKey:@"IMG_URL"];
  NSString *aVideoUrl = [aDict objectForKey:@"VIDEO_URL"];
  NSString *aAudioUrl = [aDict objectForKey:@"AUDIO_URL"];

  NSArray *aPoemArrayUrls = [NSArray arrayWithObjects:aImgUrl,aVideoUrl,aAudioUrl,nil];

  for(NSString* urlString in aPoemArrayUrls)
  {
      NSURL *url = [NSURL URLWithString:urlString];
      ASIHTTPRequest *downloadAFileRequest = [[ASIHTTPRequest requestWithURL:url]retain];
      NSString *Filename = [urlString lastPathComponent];
      NSLog(@"%@ filename",Filename);
      [downloadAFileRequest setUserInfo:[NSDictionary dictionaryWithObject:@"request1" forKey:@"name"]];
      [downloadAFileRequest setDownloadDestinationPath:[[NSHomeDirectory() stringByAppendingPathComponent:@"Documents"] stringByAppendingPathComponent:Filename]];
      [downloadAFileRequest setShouldContinueWhenAppEntersBackground:YES];
      [downloadAFileRequest setDelegate:self];
      [downloadAFileRequest setDidFinishSelector:@selector(requestDone:)];
      [downloadAFileRequest setDidFailSelector:@selector(requestWentWrong:)];
      [downloadAFileRequest setShowAccurateProgress:YES];

      [self.networkQueue addOperation:downloadAFileRequest];
  }

  [self.networkQueue go];


}
}

我想你忘了设置
IsRequestCompleted=NO在第二个函数中。还有,为什么要发送cancelAllOperations?这很有可能成为问题所在


此外,无需自动释放self.networkQueue并每次重新初始化它。只需为类设置一次,并在
-dealoc

中发布,直接添加到单元格[cell.contentView addSubview:progress]也是个坏主意;重复使用会破坏你的逻辑,但我没听清楚。