[英]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¶m2=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.