JavaServlet发送回响应
我正在尝试将一些文本从服务器端发送回客户端。我尝试了response.setStatus、response.setHeader,但它们都不起作用。我需要一些帮助 这是我的客户: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
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被调用了。谢谢,我刚刚发现这个问题。我删除了所有请求主体部分。谢谢,我刚刚发现此问题。我移除了所有身体部位。