6

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

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()));        
4

2 回答 2

7

弄清楚了。通过使用 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()));       
于 2013-05-30T16:26:02.827 回答
0

如果您想在 URL 上更改它:

website.openConnection().setReadTimeout(5000);
website.openConnection().setConnectTimeout(5000);
于 2015-11-26T12:01:16.720 回答