2012-05-21 56 views
0

我試圖從服務器上的文件下載到iphone這樣NSURLConnection的接收「假」的文件下載

NSURL *newURL0 = [NSURL URLWithString: url]; 
NSMutableURLRequest *req0 = [NSMutableURLRequest requestWithURL:newURL0]; 
NSURLConnection conn = [[NSURLConnection alloc] initWithRequest:req0 delegate:self]; 

然後

- (void)connectionDidFinishLoading:(NSURLConnection *)connection { 

    NSURL *docDirectory = [[[NSFileManager defaultManager] URLsForDirectory: 
          NSDocumentDirectory inDomains:NSUserDomainMask] lastObject]; 

    NSURL *filePath = [docDirectory URLByAppendingPathComponent:temp]; 

    [webData writeToURL:filePath atomically:YES]; 
    [webData release]; 

    connection = nil ; 

    if ([delegate respondsToSelector:@selector(getDataSucceeded:)]) { 

     NSLog(@"Log: %@", @"yes"); 
     [delegate getDataSucceeded:self.list]; 
    } 
} 

這總是完美地工作,但最近我已經注意到它不再工作了。沒有對與此功能相關的任何文件進行更改,它只是停止工作。當我在網絡瀏覽器中使用相同的URL時,文件下載正常,但在我的應用中,當我請求文件時,它只返回5個字節,'False'這個詞我也發現很奇怪,因爲服務器不會返回False,如果有問題,它會返回一條錯誤消息。服務器端代碼是用Visual Basic編寫的。

任何想法或建議,我們非常感激

回答

1

False是在Visual Basic中的關鍵字,它不是在Objective-C中的關鍵字。也沒有理由在這樣的回覆中顯示爲文字。這幾乎肯定是在服務器端生成的。

使用HTTP代理(如Charles)來查看您的Web瀏覽器和您的應用程序發出的請求。它們之間會有區別,導致服務器以不同的方式做出響應。使用像cURL這樣的工具手動發出請求,以確定哪些差異是原因。或者,檢查您的服務器端代碼的提交日誌,以獲取可能導致此問題的最新更改。

0

我想你錯過了,你需要附加數據的chunck在一個NSData對象以下回調函數:在我的情況 _responseText是NSData對象

- (void)connection:(NSURLConnection *)connection didReceiveData:(NSData *)data { 
    [_responseText appendData:data]; 
} 

希望這將幫助你out