从 Java 应用程序调用 Servlet [英] Calling a Servlet from a Java application
问题描述
我想从 Java 应用程序调用 Servlet.问题是,该调用似乎没有到达 Servlet.我没有收到任何错误,但没有到达 Servlet 中的第一个输出doPost".如果我在 Web 浏览器中打开 URL,我当然会得到不支持 GET 的错误等,但至少我看到,发生了一些事情.
I want to call a Servlet from a Java application. The problem is, that the call seems not to reach the Servlet. I do not get any error, but do not reach the first output "doPost" in the Servlet. If I open the URL in a web browser, I got - of course - the error that GET is not supported etc., but at least I see, that something happens.
我使用以下代码(ActionPackage 类只包含一个参数向量并且是可序列化的):
I use the following code (the ActionPackage class only holds a Vector of parameters and is Serializable):
Java 应用程序:
ActionPackage p = new ActionPackage();
p.addParameter("TEST", "VALUE");
System.out.println(p);
URL gwtServlet = null;
try {
gwtServlet = new URL("http://localhost:8888/app/PushServlet");
HttpURLConnection servletConnection = (HttpURLConnection) gwtServlet.openConnection();
servletConnection.setRequestMethod("POST");
servletConnection.setDoOutput(true);
ObjectOutputStream objOut = new ObjectOutputStream(servletConnection.getOutputStream());
objOut.writeObject(p);
objOut.flush();
objOut.close();
} catch (MalformedURLException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
服务端:
public class PushServlet extends HttpServlet {
public void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
System.out.println("doPost");
ObjectInputStream objIn = new ObjectInputStream(request.getInputStream());
ActionPackage p = null;
try {
p = (ActionPackage) objIn.readObject();
} catch (ClassNotFoundException e) {
e.printStackTrace();
}
System.out.println("Servlet received p: "+p);
}
}
知道出了什么问题吗?
谢谢.
推荐答案
URLConnection
只会在您调用任何 get
方法时延迟执行.
URLConnection
is only lazily executed whenever you call any of the get
methods.
将以下内容添加到您的代码中,以实际执行 HTTP 请求并获取 servlet 响应正文.
Add the following to your code to actually execute the HTTP request and obtain the servlet response body.
InputStream response = servletConnection.getInputStream();
另见:
- 如何使用
java.net.URLConnection
来触发和处理 HTTP 请求? - How to use
java.net.URLConnection
to fire and handle HTTP requests?
See also:
这篇关于从 Java 应用程序调用 Servlet的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!