2010-04-01 56 views
0

我们有一个Flex客户端和一个使用Spring/Blazeds项目的服务器。在Flex应用程序中处理重定向的URL?

用户登录并通过身份验证后,spring安全层将重定向发送到我们的主应用程序所在的新URL。

但是,在flex客户端中,我目前正在使用HTTPService进行初始请求,并将重定向页面发回给我。

如何才能获取URL,以便我可以使用navigatetourl来获取应用程序所需的位置?

任何帮助将不胜感激。谢谢!

+0

你可以请张贴一些代码吗? – MonoThreaded 2010-04-01 18:59:16

回答

1

一个解决办法是,包括返回的页面上的注释块内的标记,例如:

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

然后检查它的HTTPService结果处理程序中存在。令牌的值可以用于您对navigateToURL的调用。

另一个解决方案是检查HTTP响应头并使用ActionScript提取“位置”头的值。考虑使用AS3 HTTP客户端库。

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); 

注:AS3 HTTP客户端依赖于AS3核心和AS3加密库。

+0

对不起 - 这是一个很晚的回复,但这个回应非常有帮助! – fortpointuiguy 2010-07-01 02:12:19

+0

很高兴帮助你:)! – Saheed 2010-07-02 16:15:43

0

你也可以简单地使用URLLoader类,不需要外部代码。它发送的事件之一是HTTPStatusEvent.HTTP_RESPONSE_STATUS。只需将其插入到该和检索重定向的URL:

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

我(成功)使用此代码,现在,所以如果不出于某种原因,让我知道。