2013-05-30 20 views
5

私のアプリでは、URLに接続し、結果のXMLレスポンスを解析するために以下を使用しています。私の問題は、openStream()メソッドでタイムアウトを設定する方法を見つけることができないため、約5秒間だけ待機し、応答がない場合は失敗します。待って待っているだけです。何かご意見は?URL.openStream()でタイムアウトを設定するには

URL website = new URL(sb.toString());       
SAXParserFactory spf = SAXParserFactory.newInstance(); 
SAXParser sp = spf.newSAXParser(); 
XMLReader xr = sp.getXMLReader(); 
DataHandler h = new DataHandler(); 
xr.setContentHandler(h);    
xr.parse(new InputSource(website.openStream()));   

答えて

6

これがわかりました。 URLConnectionを使用し、setConnectionTimeoutメソッドとsetReadTimeoutメソッドを呼び出すことで、私が望むものを達成することができます。更新されたコードの下....

URLConnection conn = new URL(sb.toString()).openConnection(); 
conn.setConnectTimeout(5000); 
conn.setReadTimeout(5000); 
SAXParserFactory spf = SAXParserFactory.newInstance(); 
SAXParser sp = spf.newSAXParser(); 
XMLReader xr = sp.getXMLReader(); 
DataHandler h = new DataHandler(); 
xr.setContentHandler(h);    
xr.parse(new InputSource(conn.getInputStream()));  
0

あなたはURLでそれを変更する場合:

website.openConnection().setReadTimeout(5000); 
website.openConnection().setConnectTimeout(5000); 
関連する問題