Это связано с этот вопрос. Я пишу приложение 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 здесь:
suppress_response_codes: If this parameter is present, all responses will be returned with a 200 OK status code - even errors. This parameter exists to accommodate Flash and JavaScript applications running in browsers that intercept all non-200 responses. If used, it's then the job of the client to determine error states by parsing the response body. Use with caution, as those error messages may change.
Я не знаю, работает ли это в обычном приложении Flex, но в приложениях AIR вы можете установить список разрешенных кодов ответа, которые будут считаться действительными.
Это потому, что ваш URL-запрос обрабатывает аутентификацию. Чтобы этого не произошло, сделайте следующее:
request.authenticate = false;
С Уважением!
Алена.