NSURLErrorDomain error -1021

梦想与她 提交于 2019-12-01 02:03:59

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!

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.

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!