2013-05-30 147 views
5

我在我的应用程序中使用以下内容来连接到URL并解析生成的XML响应。我的麻烦是我找不到一种方法来设置openStream()方法的超时,以便它只等待约5秒,如果没有收到响应,则失败。它只是在等待和等待。有什么想法吗?在URL.openStream()设置超时Android

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

,如果你想改变它的网址:

website.openConnection().setReadTimeout(5000); 
website.openConnection().setConnectTimeout(5000);