簡體   English   中英

Java從Servlet調用帶有POST中參數的第三方URL

[英]Java call thirdparty url with parameters in POST from a servlet

從我的Java Web應用程序中,我想調用第三方站點的URL。 第三方url需要一些只能通過post接受的輸入參數。這些輸入不是來自使用我網站的客戶。 最后,第三方頁面將顯示在我網站的iframe中。 我可以使用一個jsp文件來做到這一點,該文件將隱藏這些輸入,並按如下所示提交onload表單:

<body onload="document.form1.submit()">
    <%  
        response.setHeader("Cache-Control","no-cache"); //HTTP 1.1
        response.setHeader("Pragma","no-cache"); //HTTP 1.0
        response.setDateHeader ("Expires", 0);
    %>  
<FORM METHOD="post" ACTION="<%= (String)request.getAttribute("thridpartyurl") %>" id=form1 name=form1>
<table width="100%" border="0" align="center" cellpadding="0" cellspacing="0" class="rightbox"> 
    <tr>
        <td>
        <input type="hidden" name="param1" value="<%= (String)request.getAttribute("param1") %>">
                <input type="hidden" name="param2" value="<%= (String)request.getAttribute("param2") %>">

        </td>
    </tr>
</table>    
</form>
</body>

但我想避免這種jsp提交。 我正在尋找一種無需JSP參與的方法。 有什么辦法可以在Java中做到這一點。 通過我的小搜索,我理解為response.sendRedirect無法提交帖子。 並且dispatcher.forward(request, response)不能用於外部項目url。

請幫忙。

問候,

下面是調用任何http網址的Java代碼。

    String url = "thirdparty site url";

    URL obj = new URL(url);

    HttpsURLConnection con = (HttpsURLConnection) obj.openConnection();

    //add reuqest header
    con.setRequestMethod("POST");


    String urlParameters = "param1=value1&param2=value2";

    // Send post request
    con.setDoOutput(true);
    DataOutputStream wr = new DataOutputStream(con.getOutputStream());
    wr.writeBytes(urlParameters);
    wr.flush();
    wr.close();

    int responseCode = con.getResponseCode();
    System.out.println("\nSending 'POST' request to URL : " + url);
    System.out.println("Post parameters : " + urlParameters);
    System.out.println("Response Code : " + responseCode);

    BufferedReader in = new BufferedReader(
            new InputStreamReader(con.getInputStream()));
    String inputLine;
    StringBuffer response = new StringBuffer();

    while ((inputLine = in.readLine()) != null) {
        response.append(inputLine);
    }
    in.close();

    //print result
    System.out.println(response.toString());

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM