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 и позже.

Другие вопросы по тегам