是否有可能将POST数据从JSF应用程序发送到aspx . net ?



在我们的JSF应用程序(MyFaces Trinidad)中,我们有一个链接,点击它将启动一个使用aspx运行的应用程序(http://crd-dev:1890/Timeandreviews/Login.aspx)。由于已经对用户进行了身份验证,因此必须将用户id传递给ASPX应用程序。他们不想接收URL中的GET参数,他们需要它作为POST数据。有可能将其作为POST数据发送吗?如果可能的话,如何在JSF中发送,以及如何在ASPX中读取。

我试过在JSF (.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();
    }

并尝试在aspx中读取方法1:

string[] keys = Request.Form.AllKeys;
for (int i= 0; i < keys.Length; i++) 
{
   Response.Write(keys[i] + ": " + Request.Form[keys[i]] + "<br>");
}
方法二:var oSR = new StreamReader(Request.InputStream); string sContent = oSR.ReadToEnd();

但是它们都不起作用。请帮助

由于您不仅需要发布数据,还需要重定向用户,因此Apache HttpClient不会帮助您。

最简单的解决方案是创建一个包含隐藏输入的表单,填写它们并发布表单。

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

你可以从你的bean中执行javascript,像这样添加:

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

相关内容

  • 没有找到相关文章

最新更新