可能的重复:
远程 servlet 之间的通信
是否可以在不同服务器上的 servlet 之间发送对象?问题是,当我的 servlet 接收到 http 请求时,在发送响应之前,它需要将一些数据发送到另一个 Web 应用程序(在不同的服务器上),获取响应,然后处理接收到的数据。但是我真的不知道如何解决这个问题。servlet 是否可以向另一个 servlet 发送 http 请求,然后从中获取响应?
可能的重复:
远程 servlet 之间的通信
是否可以在不同服务器上的 servlet 之间发送对象?问题是,当我的 servlet 接收到 http 请求时,在发送响应之前,它需要将一些数据发送到另一个 Web 应用程序(在不同的服务器上),获取响应,然后处理接收到的数据。但是我真的不知道如何解决这个问题。servlet 是否可以向另一个 servlet 发送 http 请求,然后从中获取响应?
当然这是可能的——您可以HttpURLConnection
像在 JavaSE 中一样在其中创建一个。通常我所做的是,如果出现错误,将原始(第二个服务器)HTTP 错误代码转发给客户端。
这是一个如何使用 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 等内容。