2010-04-01 54 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; 
} 

我(成功)使用此代碼,現在,所以如果不出於某種原因,讓我知道。