Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/xml/12.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Android 在URL.openStream()上设置超时_Android_Xml_Url - Fatal编程技术网

Android 在URL.openStream()上设置超时

Android 在URL.openStream()上设置超时,android,xml,url,Android,Xml,Url,我在我的应用程序中使用以下命令连接到URL并解析生成的XML响应。我的问题是,我无法找到一种方法来设置openStream()方法的超时,使其只等待大约5秒钟,如果没有收到响应,则会失败。它一直在等待。有什么想法吗 URL website = new URL(sb.toString()); SAXParserFactory spf = SAXParserFactory.newInstance(); SAXParser sp = spf.newSA

我在我的应用程序中使用以下命令连接到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()));        

我明白了。通过使用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()));       

如果要在URL上更改它:

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