2011-07-07 87 views
4

我目前正在閱讀PHP腳本(如下所示)的XML文件,但是我現在想要添加某種形式的HTTP超時來檢索XML。可能在DocumentBuilder上設置超時?

DocumentBuilderFactory docBuilderFactory = DocumentBuilderFactory.newInstance(); 
DocumentBuilder docBuilder = docBuilderFactory.newDocumentBuilder(); 
Document doc = docBuilder.parse("http://www.mywebsite.com/returnsXML"); 

根據我目前的方法,這可以很容易地添加,或者我需要改變請求以支持超時嗎?

回答

7

您可以打開手動連接並設置超時的URLConnection:

URL url = new URL("http://www.mywebsite.com/returnsXML"); 
URLConnection con = url.openConnection(); 
con.setConnectTimeout(10000); // 10 seconds 
Document doc = docBuilder.parse(con.getInputStream()); 
1

好像有幾個編譯問題與對方的回答,正確的精神雖然。

這裏是一個編譯版本:

private static Document fetchDocument(String requestUrl) { 
     try { 
      DocumentBuilderFactory dbf = DocumentBuilderFactory.newInstance(); 
      DocumentBuilder db = dbf.newDocumentBuilder(); 

      URL url = new URL(requestUrl); 
      URLConnection con = url.openConnection(); 
      con.setConnectTimeout(10000);//The timeout in mills 
      Document doc = db.parse(con.getInputStream()); 

      return doc; 

     } catch (Exception e) { 
      throw new RuntimeException(e); 
     } 
    }