2011-05-03 55 views
6

我想用某些參數調用servlet並接收響應。代碼是用Java編寫的。 什麼是最好(最乾淨)的方式來做到這一點?如何從Java代碼調用servlet

另外,我可以調用一個servlet並繼續使用代碼等待servlet完成(關閉連接並「忘掉它」)嗎?從here

+0

如果您想繼續使用應用程序的其他部分,您可以將您的請求轉換爲單獨的「線程」。 另請參閱:http://stackoverflow.com/questions/4349854/calling-a-servlet-from-a-java-application – Catchwa 2011-05-03 07:13:44

+0

「什麼是最好(最乾淨)的方式來做到這一點」什麼是*最好*或*最乾淨*的意思。 – Raedwald 2014-07-28 12:28:55

回答

4

更好的使用Apache的HttpClient API用於處理和通信的servlet

http://hc.apache.org/httpcomponents-client-ga/index.html

特點:

  1. 帕拉姆很容易通過,並解析響應。
  2. 其甚至允許通代理通信
  3. 開源
  4. 它還支持Asyncronous 和許多 請參考上面的網址。
4

例子:

import java.net.*; 
import java.io.*; 

public class URLConnectionReader { 
    public static void main(String[] args) throws Exception { 
    URL yahoo = new URL("http://www.yahoo.com/"); 
    URLConnection yc = yahoo.openConnection(); 
    BufferedReader in = new BufferedReader(
          new InputStreamReader(
          yc.getInputStream())); 
    String inputLine; 

    while ((inputLine = in.readLine()) != null) 
     System.out.println(inputLine); 
    in.close(); 
    } 
} 

從你的角度,servlet的只是一些服務器上的URL。至於沒有等待迴應 - 請閱讀Java線程。但是,如果不等待servlet完成,就無法關閉HTTP連接,因爲這可能導致servlet失敗。只需在一個單獨的線程中等待響應,如果無關緊要,就放棄它。

+0

我是否需要等待迴應(如果解決方案使用線程,比答案仍然是 - 我必須等待答案)。將參數傳遞給servlet怎麼樣?我是否必須自己填寫網址(使用'?'和'&')還是有更清晰的方法? – 2011-05-03 07:14:12