嗨,
我们可以从一台服务器向另一台Web服务器发出POST呼叫吗?例如,在server1中部署了一个Web应用程序。当我们调用部署在server2中的Web应用程序时,是否可以使用POST方法类型进行调用。或始终可以是带有显式URL的GET方法
两种方式:
response.setStatus(307); response.setHeader("Location", "http://other.com");
但是,这将在客户端发出安全确认警告。
URLConnection connection = new URL("http://other.com").openConnection(); connection.setDoOutput(true); // POST // Copy headers if necessary. InputStream input1 = request.getInputStream(); OutputStream output1 = connection.getOutputStream(); // Copy request body from input1 to output1. InputStream input2 = connection.getInputStream(); OutputStream output2 = response.getOutputStream(); // Copy response body from input2 to output2.
但是,这不会更改URL,客户端会认为他仍在您的网站上。
更新 :您实际上想从POST重定向到GET,包括所有请求参数。在这种情况下,只需收集POST参数,然后将它们作为查询字符串发送到默认(302)重定向中。
String encoding = request.getCharacterEncoding(); if (encoding == null) { encoding = "UTF-8"; request.setCharacterEncoding(encoding); } StringBuilder query = new StringBuilder(); for (Entry<String, String[]> entry : request.getParameterMap().entrySet()) { for (String value : entry.getValue()) { if (query.length() > 0) query.append("&"); query.append(URLEncoder.encode(entry.getKey(), encoding)); query.append("="); query.append(URLEncoder.encode(value, encoding)); } } response.sendRedirect("http://example.com?" + query);