2011-07-07 11 views
4

私は現在、うまく動作するPHPスクリプト(下記)からXMLファイルを読み込んでいますが、XMLを取得するためにHTTPタイムアウトのフォームを追加したいと思います。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); 
     } 
    } 
関連する問題