2011-07-07 92 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); 
     } 
    }