2015-09-02 4 views
0

Dans notre application JSF (MyFaces Trinidad), nous avons un lien en cliquant sur ce qui lancera une application en cours d'exécution en utilisant aspx (http://crd-dev:1890/Timeandreviews/Login.aspx). Puisque nous avons déjà authentifié l'utilisateur, nous devons transmettre l'identifiant de l'utilisateur à l'application ASPX. Ils ne veulent pas recevoir ce paramètre dans l'URL GET, ils en ont besoin comme données POST. Est-ce possible de l'envoyer en tant que données POST? Si possible, comment envoyer JSF et comment le lire en ASPX.Est-il possible d'envoyer des données POST depuis une application JSF vers aspx .NET?

J'ai essayé de placer comme ci-dessous dans JSF (page xhtml)

ExternalContext ext = FacesContext.getCurrentInstance().getExternalContext(); 
    HttpServletRequest httpRequest = (HttpServletRequest) ext.getRequest(); 
    HttpSession httpSession = (HttpSession) ext.getSession(true); 
    httpRequest.setAttribute("USER_HTREQ", "TST_USR"); 
    httpSession.setAttribute("USER_HTSES", "TST_USR"); 
    ext.getRequestMap().put("USER_REQMP", "TST_USR"); 
    try { 
     ext.redirect("http://crd-dev:1890/Timeandreviews/Login.aspx"); 
    } catch (IOException e) { 
     // TODO Auto-generated catch block 
     e.printStackTrace(); 
    } 

et avons essayé la lecture dans ASPX comme Méthode 1:

string[] keys = Request.Form.AllKeys; 
for (int i= 0; i < keys.Length; i++) 
{ 
    Response.Write(keys[i] + ": " + Request.Form[keys[i]] + "<br>"); 
} 

Méthode 2: var oSR = new StreamReader(Request.InputStream); string sContent = oSR.ReadToEnd();

Mais tous deux travaillent. S'il vous plaît aider

+0

Voir http://stackoverflow.com/questions/3324717/sending-http-post-request-in-java –

Répondre

0

Comme vous n'avez pas seulement besoin de publier des données, mais aussi besoin de rediriger l'utilisateur, Apache HttpClient ne va pas vous aider.

La solution la plus simple consiste simplement à créer un formulaire avec des entrées masquées, à les remplir et à publier le formulaire.

<form method="post" id="form-id" 
     action="http://crd-dev:1890/Timeandreviews/Login.aspx"> 
    <input type="hidden" name="input-id" id="input-id"/> 
    etc. 
</form> 

Vous pouvez exécuter des scripts Java de votre bean en ajoutant comme ceci:

String script = "document.getElementById('input-id').value = 'value';" 
       + "document.getElementById('form-id').submit();"; 
FacesContext fctx = FacesContext.getCurrentInstance(); 
ExtendedRenderKitService erks = 
    Service.getRenderKitService(fctx, ExtendedRenderKitService.class); 
erks.addScript(fctx, script); 
+0

Merci @jasper "créer un formulaire avec des entrées cachées, remplissez-les et postez le formulaire." Moyens de créer un champ caché à mon code (fin JSF), remplissez-le comme vous l'avez dit ci-dessus et rediriger vers la page ASPX? Toute idée comment ASP .NET devrait lire ce champ caché? – Pat

+0

Il n'est pas nécessaire de faire quoi que ce soit du côté ASP .NET. Utilisez simplement l'URL d'action correcte et publiez le formulaire. Voir aussi la réponse mise à jour. –