2010-04-01 3 views
0

Nous avons un client Flex et un serveur qui utilise le projet Spring/Blazeds. Une fois que l'utilisateur se connecte et est authentifié, la couche de sécurité de printemps envoie une redirection vers une nouvelle URL, où se trouve notre application principale.Gestion de l'URL redirigée dans l'application Flex?

Cependant, dans le client Flex, j'utilise actuellement HTTPService pour la demande initiale et je reçois la page redirigée dans son intégralité.

Comment puis-je obtenir l'URL afin que je puisse utiliser navigatetourl pour obtenir où l'application doit aller où elle doit?

Toute aide serait grandement appréciée. Merci!

+0

pouvez-vous s'il vous plaît poster un code? – MonoThreaded

Répondre

1

Une solution serait d'inclure un jeton dans un bloc de commentaires sur la page retournée, par exemple:

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

puis de vérifier sa présence dans le gestionnaire de résultat HTTPService. La valeur du jeton pourrait alors être utilisée dans votre appel à navigateToURL.

Une autre solution consisterait à examiner les en-têtes de réponse HTTP et à extraire la valeur de l'en-tête "Location" à l'aide d'ActionScript. Envisagez d'utiliser la bibliothèque AS3 HTTP Client.

des exemples Page http://code.google.com/p/as3httpclientlib/wiki/Examples Pour déterminer l'en-tête 'Localisation' de la réponse:

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

REMARQUE: AS3 client HTTP dépend libs AS3 Core et AS3 Crypto.

+0

Désolé - c'est une réponse tardive mais cette réponse a été très utile! – fortpointuiguy

+0

Heureux que ça vous a aidé :)! – Saheed

0

Vous pouvez également utiliser simplement la classe URLLoader, pas besoin de code externe. L'un des événements qu'il diffuse est HTTPStatusEvent.HTTP_RESPONSE_STATUS. Il suffit de brancher et que récupérer l'URL redirigée:

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

Je suis (avec succès) en utilisant ce code en ce moment, donc si ça ne marche pas pour une raison quelconque, laissez-moi savoir.

Questions connexes