两种方式:
- 如果您当前的请求已经是POST,则只需发送307重定向即可。
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,客户端会认为他仍在您的网站上。
也可以看看:
- 如何使用URLConnection触发和处理HTTP请求?
更新
:您实际上想从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(URLEnprer.enpre(entry.getKey(), encoding)); query.append("="); query.append(URLEnprer.enpre(value, encoding)); } } response.sendRedirect("http://example.com?" + query);


