NSURLErrorDomain error -1021

2020-03-08 06:30发布

I'm developing an app were I integrated dropbox. Login is done properly also I'm able to create folder in dropBox. But when I try to load file I'm getting error

Following error I'm getting

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}

I'm not getting this error when I'm creating folder.

2条回答
我只想做你的唯一
2楼-- · 2020-03-08 07:26

I had the same problem with iOS 5.0 on iPhone, but the iPhone 6.1 simulator worked without creating error messages.

I took a look into the DropboxSDK / DBRestClient.m, especially the last lines of uploadFile:toPath:fromPath:params and implemented a categorie 'ExBody' on DBRequest to add the connection:needNewBodyStream method:

#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

This worked for me. The method is called on iOS5, not on iOS6!

查看更多
Animai°情兽
3楼-- · 2020-03-08 07:30

Error -1021 is a NSURLErrorRequestBodyStreamExhausted error.

According to the documentation you're missing a delegate method:

NSURLErrorRequestBodyStreamExhausted
Returned when a body stream is needed but the client does not provide one. This impacts clients on iOS that send a POST request using a body stream but do not implement the NSURLConnection delegate method connection:needNewBodyStream. Available in OS X v10.7 and later.

查看更多
登录 后发表回答