2011-03-01 28 views
4

我想使用ASIHTTPRequest下載一個文件隊列。每個請求永久失敗。我知道這些網址是有效的,我已經找到它們並將它們彈出到瀏覽器中,並且文件在那裏。我對如何調試這個問題沒有太多想法。asihttprequests失敗

-(void) getRemoteFiles:(NSMutableArray *) M 
{ 
    [self createFileToAppDirectory]; 

    if (!networkqueue) { 
     networkqueue:[[[ASINetworkQueue alloc] init] autorelease]; 
    } 

    [[self networkQueue] cancelAllOperations]; 

    [self setNetworkQueue:[ASINetworkQueue queue]]; 
    [[self networkQueue] setDelegate:self]; 
    [[self networkQueue] setRequestDidFinishSelector:@selector(requestFinished:)]; 
    [[self networkQueue] setRequestDidFailSelector:@selector(requestFailed:)]; 
    [[self networkQueue] setQueueDidFinishSelector:@selector(queueFinished:)]; 


    int i; 

    for (i=0; i<[M count]; i++) { 
     NSString *url=[M objectAtIndex:i]; 
     NSString* theFileName = [url lastPathComponent]; 
     if ([theFileName isEqualToString:@"nothing"]==NO) { 

      ASIHTTPRequest *request = [ASIHTTPRequest requestWithURL:[NSURL URLWithString:url]]; 
      //[request setDownloadDestinationPath:[self getDirectoryPathForFileName:theFileName]]; 
      [[self networkQueue] addOperation:request]; 

     } 

    } 

    [[self networkQueue] go]; 


} 

編輯

我想我找到了問題,但我不知道如何解決它。如果我將請求網址更改爲像http://mysite/content/track.mp3這樣的簡單內容,則一切正常。但是當我使用原始網址時,請求失敗。原始URL看起來像這樣

http://site-media.s3.amazonaws.com/2020願景 - 深科技house和techno/P_122_DrumLp6.mp3

我認爲它可能有一些做的空間,但我認爲NSURL會處理這些東西?

+0

您是否在requestFailed方法中看到錯誤? – 2011-03-01 15:24:31

+0

是的。正在調用requestFailed方法。 – dubbeat 2011-03-01 15:32:06

+0

你看到了什麼錯誤信息?下面這行會給你錯誤信息:NSError * error = [request error]; – 2011-03-01 15:34:48

回答

4

事實證明,NSURL不會安全地爲您編碼一個url字符串。在我的情況下,導致問題的URL中的空格。其結構如下

NSString *safestring=[unsafestring stringByAddingPercentEscapesUsingEncoding:NSUTF8StringEncoding];