我们有一个Flex客户端和一个使用Spring/Blazeds项目的服务器。在Flex应用程序中处理重定向的URL?
用户登录并通过身份验证后,spring安全层将重定向发送到我们的主应用程序所在的新URL。
但是,在flex客户端中,我目前正在使用HTTPService进行初始请求,并将重定向页面发回给我。
如何才能获取URL,以便我可以使用navigatetourl来获取应用程序所需的位置?
任何帮助将不胜感激。谢谢!
我们有一个Flex客户端和一个使用Spring/Blazeds项目的服务器。在Flex应用程序中处理重定向的URL?
用户登录并通过身份验证后,spring安全层将重定向发送到我们的主应用程序所在的新URL。
但是,在flex客户端中,我目前正在使用HTTPService进行初始请求,并将重定向页面发回给我。
如何才能获取URL,以便我可以使用navigatetourl来获取应用程序所需的位置?
任何帮助将不胜感激。谢谢!
一个解决办法是,包括返回的页面上的注释块内的标记,例如:
<!-- 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加密库。
对不起 - 这是一个很晚的回复,但这个回应非常有帮助! – fortpointuiguy 2010-07-01 02:12:19
很高兴帮助你:)! – Saheed 2010-07-02 16:15:43
你也可以简单地使用URLLoader类,不需要外部代码。它发送的事件之一是HTTPStatusEvent.HTTP_RESPONSE_STATUS
。只需将其插入到该和检索重定向的URL:
urlLoader.addEventListener(HTTPStatusEvent.HTTP_RESPONSE_STATUS, onHTTPResponseStatus);
private function onHTTPResponseStatus(event:HTTPStatusEvent):void
{
var responseURL:String = event.responseURL;
}
我(成功)使用此代码,现在,所以如果不出于某种原因,让我知道。
你可以请张贴一些代码吗? – MonoThreaded 2010-04-01 18:59:16