JavaServlet发送回响应

JavaServlet发送回响应,java,http,servlets,Java,Http,Servlets,我正在尝试将一些文本从服务器端发送回客户端。我尝试了response.setStatus、response.setHeader,但它们都不起作用。我需要一些帮助 这是我的客户: public static void main(String[] args) throws MalformedURLException, IOException { URL url = new URL("http://localhost:8080/WebServiceDesignStyles3ProjectSe

我正在尝试将一些文本从服务器端发送回客户端。我尝试了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,这是默认值。我怎样才能将一些信息发送回客户

编辑:

问题解决了,我不应该要求狗的身体

谢谢

实际上是调用了doPost

那大概没有台词

response.setStatus(404);
response.setContentType("text/xml");
PrintWriter writer=response.getWriter();
writer.append("this is 404");
请确保正在使用
doGet()
,或在
doPost()
中执行上述操作

实际上是调用了doPost

那大概没有台词

response.setStatus(404);
response.setContentType("text/xml");
PrintWriter writer=response.getWriter();
writer.append("this is 404");

确保正在使用
doGet()
,或者在
doPost()

中将
doOutput
设置为
true
时在
doPost()中实现上述操作。您还可以将请求方法设置为POST:参见Javadoc。因此没有调用您的
doGet()
方法


尝试将GET与请求的输出结合起来是没有意义的。GET请求不能有请求正文。

当您将
doOutput
设置为
true
时,您还将请求方法设置为POST:请参阅Javadoc。因此没有调用您的
doGet()
方法


尝试将GET与请求的输出结合起来是没有意义的。GET请求不能有请求正文。

您是否尝试在web浏览器中访问服务器以查看它将返回什么?尝试在浏览器中打开URL,查看它是否为404,以此类推。最明显的是,要调查的是您的代码是否实际服务于您尝试访问的URL。如果您可以调试servlet容器,在doGet方法中放置断点,或者在doGet的开头插入日志语句,以确保该方法被实际调用。我在浏览器中打开了URL,它没有显示404。我在doGet中设置了断点,不幸的是doGet没有被调用。实际上已调用doPost。您是否尝试在web浏览器中访问服务器以查看它将返回什么?尝试在浏览器中打开URL,查看它是否为404,依此类推。要调查的最明显的事情是您的代码是否实际为您尝试访问的URL提供服务。如果您可以调试servlet容器,在doGet方法中放置断点,或者在doGet的开头插入日志语句,以确保该方法被实际调用。我在浏览器中打开了URL,它没有显示404。我在doGet中设置了断点,不幸的是doGet没有被调用。实际上doPost被调用了。谢谢,我刚刚发现这个问题。我删除了所有请求主体部分。谢谢,我刚刚发现此问题。我移除了所有身体部位。