Как избежать диалогового окна аутентификации во Flex при использовании HTTPService или URLRequest?
-
03-07-2019 - |
Вопрос
Это связано с этот вопрос.Я пишу приложение Flex (WindowedApplication), использующее REST.Все в порядке, когда я публикую сообщения с действительной аутентификацией, но если я передам недействительное имя пользователя или пароль в REST API (точнее, в Twitter REST API), появится диалоговое окно аутентификации.
Это нежелательный пользовательский опыт, и это происходит как при использовании HTTPService, так и при использовании URLRequest.Кажется, не существует события, которое я мог бы уловить, чтобы отменить диалог.
Вот как выглядит мой код:
var request:URLRequest = new URLRequest('http://twitter.com/statuses/update.json');
request.method = URLRequestMethod.POST;
var encoder : Base64Encoder = new Base64Encoder();
encoder.encode(this.user + ':' + this.password);
request.requestHeaders.push(new URLRequestHeader("Authorization", "Basic " + encoder.toString()));
var params:Object = new Object();
params.status = msg;
request.data = params;
var loader:URLLoader = new URLLoader();
loader.addEventListener(Event.COMPLETE, HandleRequestComplete);
loader.load(request);
Я что-то пропустил?Есть ли лучший способ подойти к этому?
Решение
Из документа Twitter API здесь:
подавить_коды_ответа:Если этот параметр присутствует, все ответы будут возвращены с кодом состояния 200 OK - даже ошибки.Этот параметр существует для размещения приложений Flash и JavaScript, работающих в браузерах, которые перехватывают все не 200 ответов.При использовании, то это задача клиента по определению состояний ошибки путем анализа тела ответа.Используйте с осторожностью, поскольку эти сообщения об ошибках могут измениться.
Другие советы
Это потому, что ваш URLRequest обрабатывает аутентификацию.Чтобы этого избежать, сделайте следующее:
request.authenticate = false;
С уважением!
Ален.
Я не знаю, работает ли это в обычном приложении Flex, но в приложениях AIR вы можете установить список разрешенных кодов ответов, которые будут считаться действительными.