Servlet与另一台服务器通信

时间:2012-11-12 21:35:03

标签: java java-ee servlets

  

可能重复:
  communication between remote servlets

是否可以在不同服务器上的servlet之间发送对象? 问题是,当我的servlet收到http请求时,在发送响应之前,它需要将一些数据发送到另一个Web应用程序(在不同的服务器上),获得响应,然后处理接收到的数据。但是,我真的不知道如何解决这个问题。 servlet是否可以将http请求发送到另一个servlet,然后从中获取响应?

2 个答案:

答案 0 :(得分:0)

当然有可能 - 您可以像在JavaSE中一样创建HttpURLConnection。通常我所做的是,如果出现错误,将原始(第二个服务器)HTTP错误代码转发给客户端。

答案 1 :(得分:0)

以下是如何使用HttpURLConnection与另一个servlet(或任何http服务器)进行通信的示例...

URL url = new URL ("http://host/myservlet");
HttpURLConnection connection = (HttpURLConnection) url.openConnection();
connection.setDoOutput (true);
connection.setDoInput (true);
OutputStream os = connection.getOutputStream();
//TODO: optionally, send something through the OutputStream to your servlet
os.flush();
os.close();
InputStream is = connection.getInputStream();
//TODO: retrieve your results from the InputStream
is.close();

确保在完成后关闭流或使用try-with-resources块。您可以根据需要使用ObjectInputStream或InputStreamReader。您还可以使用HttpURLConnection的setRequestProperty方法来定义诸如用户代理或cookie之类的内容(如果需要)。