我们有一个Flex客户端和一个使用Spring / Blazeds项目的服务器。
用户登录并通过身份验证后,Spring安全层会将重定向发送到新URL,这是我们的主应用程序所在的位置。
但是,在flex客户端中,我正在使用HTTPService作为初始请求,我将重定向页面完整地发回给我。
如何获取网址以便我可以使用navigatetourl来获取应用程序所需的位置?
非常感谢任何帮助。谢谢!
答案 0 :(得分:1)
一种解决方案是在返回页面的注释块中包含一个令牌,例如:
<!-- redirectPage="http://localhost/new-location" -->
然后检查它是否存在于HTTPService结果处理程序中。然后可以在调用navigateToURL时使用令牌的值。
另一种解决方案是检查HTTP响应标头并使用ActionScript提取“Location”标头的值。考虑使用AS3 HTTP Client 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);
注意:AS3 HTTP客户端依赖于AS3 Core和AS3 Crypto库。
答案 1 :(得分: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;
}
我现在(成功)使用此代码,因此如果因某些原因无效,请告诉我。