Обработка перенаправленного URL в приложении Flex? - PullRequest
0 голосов
/ 01 апреля 2010

У нас есть клиент Flex и сервер, который использует проект Spring / Blazeds.

После того, как пользователь вошел в систему и прошел аутентификацию, уровень безопасности Spring отправляет перенаправление на новый URL-адрес, где находится наше основное приложение.

Однако в гибком клиенте в настоящее время я использую HTTPService для первоначального запроса и получаю перенаправленную страницу, отправленную мне полностью.

Как я могу просто получить URL, чтобы я мог использовать navigatetourl, чтобы найти приложение, куда ему нужно?

Любая помощь будет принята с благодарностью. Спасибо!

Ответы [ 2 ]

1 голос
/ 04 апреля 2010

Одним из решений будет включение токена в блок комментария на возвращаемой странице, например:

<!-- redirectPage="http://localhost/new-location" -->

, затем проверьте его наличие в обработчике результатов HTTPService. Затем значение токена можно использовать в вашем вызове для navigateToURL.

Другим решением было бы изучить заголовки ответа HTTP и извлечь значение заголовка «Местоположение» с помощью ActionScript. Подумайте об использовании HTTP-клиента AS3 lib.

со страницы примеров http://code.google.com/p/as3httpclientlib/wiki/Examples Чтобы определить заголовок «Местоположение» из ответа:

var client:HttpClient = new HttpClient();

var uri:URI = new URI("http://localhost/j_security_check");

client.listener.onStatus = function(event:HttpStatusEvent):void {
  var response:HttpResponse = event.response;
  // Headers are case insensitive

  var redirectLocation:String = response.header.getValue("Location");
  // call navigateToURL with redirectLocation
  // ... 
};

// include username and password in the request

client.post(uri);

ПРИМЕЧАНИЕ. Клиент HTTP AS3 зависит от ядра AS3 и криптографических библиотек AS3.

0 голосов
/ 19 мая 2011

Вы также можете просто использовать класс URLLoader, нет необходимости во внешнем коде. Одно из отправляемых им событий - HTTPStatusEvent.HTTP_RESPONSE_STATUS. Просто подключитесь к нему и получите перенаправленный URL:

urlLoader.addEventListener(HTTPStatusEvent.HTTP_RESPONSE_STATUS, onHTTPResponseStatus);
private function onHTTPResponseStatus(event:HTTPStatusEvent):void
{
    var responseURL:String = event.responseURL;
}

Я (успешно) сейчас использую этот код, поэтому, если он по какой-то причине не работает, дайте мне знать.

...