我們有一個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