NSURLErrorDomain ошибка -1021
Я разрабатываю приложение, если бы я интегрировал Dropbox. Вход в систему выполнен правильно, и я могу создать папку в DropBox. Но когда я пытаюсь загрузить файл, я получаю сообщение об ошибке
Я получаю следующую ошибку
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}
Я не получаю эту ошибку при создании папки.
2 ответа
У меня была такая же проблема с iOS 5.0 на iPhone, но симулятор iPhone 6.1 работал без создания сообщений об ошибках.
Я взглянул на DropboxSDK / DBRestClient.m, особенно последние строки uploadFile:toPath:fromPath:params, и реализовал категорию ExBody в DBRequest, чтобы добавить метод connection: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!
Ошибка -1021 является NSURLErrorRequestBodyStreamExhausted
ошибка.
Согласно документации у вас отсутствует метод делегата:
NSURLErrorRequestBodyStreamExhausted
Возвращается, когда нужен поток тела, но клиент его не предоставляет. Это влияет на клиентов на iOS, которые отправляют POST-запрос, используя основной поток, но не реализуют соединение метода делегата NSURLConnection:needNewBodyStream. Доступный в OS X v10.7 и позже.