我正在尝试将一些文本从服务器端发送回客户端。我已经尝试了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请求机构。
感谢。
答案 0 :(得分:1)
实际上是调用了doPost。
这可能没有线
response.setStatus(404);
response.setContentType("text/xml");
PrintWriter writer=response.getWriter();
writer.append("this is 404");
确保使用doGet()
或在doPost()
中实施上述内容。
答案 1 :(得分:1)
当您将doOutput
设置为true
时,您还将请求方法设置为POST:请参阅Javadoc。因此,您的doGet()
方法未被调用。
尝试将GET与输出结合到请求中是没有意义的。 GET请求不能有请求正文。