protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
URL url = new URL("http://localhost:8080/testy/Out");
HttpURLConnection connection = (HttpURLConnection) url.openConnection();
connection.setDoOutput(true);
connection.setRequestMethod("POST");
PrintWriter out = response.getWriter();
for(Enumeration e = request.getHeaderNames(); e.hasMoreElements();) {
Object o = e.nextElement();
String value = request.getHeader(o.toString());
out.println(o + "--is--" + value + "<br>");
connection.setRequestProperty((String) o, value);
}
connection.connect();
}
我在servlet中写了上面的代码来发布表单所以除了这个servlet之外的一些备用位置,但是它不起作用。可以使用connection.setRequestProperty将头字段设置为它们在servlet的传入请求中的内容
答案 0 :(得分:1)
我认为你在寻找
RequestDispatcher rd;
rd = getServletContext().getRequestDispatcher("pathToServlet");
rd.forward(request, response);
答案 1 :(得分:1)
URLConnection
被懒惰地执行了。也就是说,在获取有关HTTP响应的一些信息之前,它不会实际触发HTTP请求。 E.g。
int responseCode = httpUrlConnection.getResponseCode();
或
InputStream responseBody = urlConnection.getInputStream();
或
String statusHeader = urlConnection.getHeaderField(null);
connection.connect();
完全是多余的。它已经在您致电url.openConnection();
时执行。此外connection.setRequestMethod("POST");
完全是超级的,connection.setDoOutput(true)
已经做到了。
也就是说,如果目标实际上位于同一台机器上托管的同一个webapp上下文中,那么有多更好的方法来调用它,而不是创建与它的HTTP连接,例如转发或重定向请求。