Java servlet 发送回响应
Java servlet send send back response
我正在尝试将一些文本从服务器端发送回客户端。我试过response.setStatus、response.setHeader,但都不起作用。我需要一些帮助
这是我的客户:
public static void main(String[] args) throws MalformedURLException, IOException {
URL url = new URL("http://localhost:8080/WebServiceDesignStyles3ProjectServer/NewServlet/www");
HttpURLConnection con = (HttpURLConnection) url.openConnection();
url.openConnection();
con.setRequestMethod("GET");
con.setRequestProperty("Accept", "text/xml");
con.setDoOutput(true);
con.setDoInput(true);
DataOutputStream wr = new DataOutputStream(con.getOutputStream());
wr.writeUTF("aaa");
wr.flush();
wr.close();
InputStream is = con.getInputStream();
BufferedReader rd = new BufferedReader(new InputStreamReader(is));
String line;
StringBuffer response = new StringBuffer();
while ((line = rd.readLine()) != null) {
response.append(line);
response.append('\r');
}
rd.close();
System.out.println(response);
System.out.println(con.getResponseCode());
System.out.println(con.getResponseMessage());
}
}
这是我来自服务器的 doGET 方法:
@Override
protected void doGet(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
//processRequest(request, response);
response.setStatus(404);
response.setContentType("text/xml");
PrintWriter writer=response.getWriter();
writer.append("this is 404");
writer.flush();
}
但是我的客户端还是默认打印了200和OK。我怎样才能将一些消息发回给客户。
编辑:
已解决,我应该没有doGet的请求体。
谢谢。
Actually doPost is invoked.
估计没有台词
response.setStatus(404);
response.setContentType("text/xml");
PrintWriter writer=response.getWriter();
writer.append("this is 404");
确保正在使用 doGet()
或在 doPost()
中实施上述内容。
当您将 doOutput
设置为 true
时,您还将请求方法设置为 POST:请参阅 Javadoc。所以你的 doGet()
方法没有被调用。
尝试将 GET 与请求的输出相结合是没有意义的。 GET 请求不能有请求主体。
我正在尝试将一些文本从服务器端发送回客户端。我试过response.setStatus、response.setHeader,但都不起作用。我需要一些帮助
这是我的客户:
public static void main(String[] args) throws MalformedURLException, IOException {
URL url = new URL("http://localhost:8080/WebServiceDesignStyles3ProjectServer/NewServlet/www");
HttpURLConnection con = (HttpURLConnection) url.openConnection();
url.openConnection();
con.setRequestMethod("GET");
con.setRequestProperty("Accept", "text/xml");
con.setDoOutput(true);
con.setDoInput(true);
DataOutputStream wr = new DataOutputStream(con.getOutputStream());
wr.writeUTF("aaa");
wr.flush();
wr.close();
InputStream is = con.getInputStream();
BufferedReader rd = new BufferedReader(new InputStreamReader(is));
String line;
StringBuffer response = new StringBuffer();
while ((line = rd.readLine()) != null) {
response.append(line);
response.append('\r');
}
rd.close();
System.out.println(response);
System.out.println(con.getResponseCode());
System.out.println(con.getResponseMessage());
}
}
这是我来自服务器的 doGET 方法:
@Override
protected void doGet(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
//processRequest(request, response);
response.setStatus(404);
response.setContentType("text/xml");
PrintWriter writer=response.getWriter();
writer.append("this is 404");
writer.flush();
}
但是我的客户端还是默认打印了200和OK。我怎样才能将一些消息发回给客户。
编辑:
已解决,我应该没有doGet的请求体。
谢谢。
Actually doPost is invoked.
估计没有台词
response.setStatus(404);
response.setContentType("text/xml");
PrintWriter writer=response.getWriter();
writer.append("this is 404");
确保正在使用 doGet()
或在 doPost()
中实施上述内容。
当您将 doOutput
设置为 true
时,您还将请求方法设置为 POST:请参阅 Javadoc。所以你的 doGet()
方法没有被调用。
尝试将 GET 与请求的输出相结合是没有意义的。 GET 请求不能有请求主体。