Я отправляю некоторые данные на http-аутентифицированный URL-адрес с помощью ASIFormDataRequest.
Когда аутентификация завершается неудачно и вызывается делегат диалога аутентификации, кажется, что процесс загрузки все еще продолжается полностью.
Итак, в этих случаях:
1) Учетные данные пользователя еще не сохранены в цепочке для ключей 2) Учетные данные пользователя, которые хранятся в цепочке для ключей, не проходят аутентификацию (истек срок действия и т. д.)
Я вижу такое поведение:
- Я вижу, что запрос пришел на мой сервер, а клиенту возвращена ошибка 401.
- Делегат uploadFailed не вызывается.
- Делегат индикатора выполнения медленно заполняется, поскольку кажется, что файл все еще выталкивается по сетевому соединению. Он завершается за время, соответствующее количеству времени, необходимому для полной загрузки.
- Появится встроенный модальный диалог аутентификации.
- Пользователь вводит правильные учетные данные
- Сброс делегата индикатора выполнения
- Загрузка начинается снова — индикатор выполнения заполняется по мере поступления данных на сервер
- Готовый метод делегата вызывается, как и ожидалось.
- Все загрузилось просто отлично со второй попытки
Здесь я настраиваю свою операцию:
[self setRequest:[ASIFormDataRequest requestWithURL:uploadURL]];
[request setDelegate:self];
[request setDidFailSelector:@selector(uploadFailed:)];
[request setDidFinishSelector:@selector(uploadFinished:)];
[request setUseKeychainPersistence:TRUE];
[request setShouldPresentAuthenticationDialog:TRUE];
[request setShouldPresentCredentialsBeforeChallenge:TRUE];
[request setPostValue:captionTextField.text forKey:@"caption"];
[request setPostValue:[siteID stringValue] forKey:@"site_id"];
[request setFile:fileToUpload forKey:@"site_photo"];
[request setUploadProgressDelegate:progressView];
[request startAsynchronous];
Я думаю, что мне нужно выдать [запрос на отмену] после сбоя аутентификации, но я не уверен, где я должен это делать.
Ожидается ли такое поведение, что POST все равно будет отклоняться даже после того, как сервер вернет 401?
Ценим любые рекомендации или указатели на существующие вопросы, касающиеся этого.