2013-04-20 33 views
1

我正在開發一個應用程序,我集成了Dropbox。登錄完成後,我也可以在dropBox中創建文件夾。但是,當我嘗試加載的文件我收到提示NSURLError域錯誤-1021

繼錯誤我得到

error making request to /1/files_put/dropbox/Info.plist - Error 
Domain=NSURLErrorDomain Code=-1021 "The operation couldn’t be 
completed. (NSURLErrorDomain error -1021.)" UserInfo=0x6859bc0 
{destinationPath=/Info.plist, 
sourcePath=/Users/bcod/Library/Application Support/iPhone 
Simulator/5.0/Applications/0E1EE43C-8F6B-40FA-8696-D3992DA2DCE5/DBRoulette.app/Info.plist} 

當我創建文件夾,我沒有得到這個錯誤。

回答

4

錯誤-1021是NSURLErrorRequestBodyStreamExhausted錯誤。

按照documentation你錯過了一個委託方法:

NSURLErrorRequestBodyStreamExhausted
當身體流需要 但客戶並沒有提供一個返回。這會影響客戶端 iOS使用正文流發送POST請求,但不會實現 NSURLConnection委託方法連接:needNewBodyStream。 適用於OS X v10.7及更高版本。

+0

我試着調用委託DBNetworkRequestDelegate,NSURLConnectionDataDelegate,NSURLConnectionDelegate但仍然有相同的錯誤 – user2185354 2013-04-20 06:36:32

+0

您是否添加了'connection:needNewBodyStream'方法? – 2013-04-20 06:44:52

+0

我該如何實現該方法 – user2185354 2013-04-20 06:51:28

7

我在iPhone上有與iOS 5.0相同的問題,但iPhone 6.1模擬器工作時沒有創建錯誤消息。

我接過來一看進入DropboxSDK/DBRestClient.m,尤其是uploadFile的最後幾行:toPath:fromPath:PARAMS和實施上DBRequest一個類別 'ExBody' 添加連接:needNewBodyStream方法:

#import "DBRequest+ExBody.h" 

@implementation DBRequest (ExBody) 

#pragma mark NSURLConnection delegate methods 

- (NSInputStream *)connection:(NSURLConnection *)connection needNewBodyStream:(NSURLRequest *)req { 

    NSString * sourcePath = [userInfo objectForKey:@"sourcePath"]; 
    NSLog(@"%@ needs newBodyStream!", sourcePath); 
    return [NSInputStream inputStreamWithFileAtPath:sourcePath]; 
} 

@end 

這對我有效。該方法在iOS5上調用,而不是在iOS6上調用!

+0

絕對節省生命。像魅力一樣工作。 – Alex1987 2013-04-27 12:33:27

+0

也爲我工作,謝謝!我已經向Dropbox報告了這個問題。他們計劃在下一個版本中加入修補程序。 – nschum 2013-05-03 12:30:38

+0

嗨@TomThumb - 我在我的項目中複製了這兩個文件。我應該在什麼地方導入.h文件? – Justin 2013-06-07 22:05:12