[英]Calling a Servlet from a Java application
我想從Java應用程序調用Servlet。 問題是,調用似乎沒有到達Servlet。 我沒有得到任何錯誤,但沒有到達Servlet中的第一個輸出“doPost”。 如果我在網絡瀏覽器中打開URL,我當然得到了GET不支持的錯誤等,但至少我看到,有些事情發生了。
我使用以下代碼(ActionPackage類只包含參數Vector並且是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();
}
}
Servlet的:
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);
}
}
出了什么問題?
謝謝。
只要你調用任何get
方法, URLConnection
就會被懶惰地執行。
將以下內容添加到代碼中以實際執行HTTP請求並獲取servlet響應主體。
InputStream response = servletConnection.getInputStream();
public void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
try {
System.out.println("doPost");
ObjectInputStream objIn = new ObjectInputStream(request.getInputStream());
ActionPackage p = null;
p = (ActionPackage) objIn.readObject();
System.out.println("Servlet rece p: "+p);
} catch (Throwable e) {
e.printStackTrace(System.out);
}
}
嘗試在try / catch塊中包裝doPost的整個主體:
public void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
try {
System.out.println("doPost");
ObjectInputStream objIn = new ObjectInputStream(request.getInputStream());
ActionPackage p = null;
p = (ActionPackage) objIn.readObject();
System.out.println("Servlet received p: "+p);
} catch (Throwable e) {
e.printStackTrace(System.out);
}
}
然后再次查看Servlet輸出日志文件或窗口以獲取可能有用的新異常。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.