可能重複:
communication between remote servlets的Servlet與其他服務器communticating
是否可以發送servlet之間的對象在不同的服務器? 問題是,當我的servlet收到一個http請求時,在發送響應之前,它需要發送一些數據到另一個web應用程序(在不同的服務器上),得到響應,然後處理接收到的數據。不過,我不知道如何解決這個問題。 servlet是否可以向另一個servlet發送http請求,然後從中獲取響應?
可能重複:
communication between remote servlets的Servlet與其他服務器communticating
是否可以發送servlet之間的對象在不同的服務器? 問題是,當我的servlet收到一個http請求時,在發送響應之前,它需要發送一些數據到另一個web應用程序(在不同的服務器上),得到響應,然後處理接收到的數據。不過,我不知道如何解決這個問題。 servlet是否可以向另一個servlet發送http請求,然後從中獲取響應?
當然可以 - 您可以像創建JavaSE一樣創建一個HttpURLConnection
。通常,我所做的是在發生錯誤時將原始(第二個服務器)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-與資源塊。您可以根據您的需要使用ObjectInputStream或InputStreamReader。您還可以使用HttpURLConnection的setRequestProperty方法來定義諸如用戶代理或cookie之類的內容(如果需要的話)。