整天被这个问题困扰,一直在尝试从这个网站检索 XML:
http://www.teamliquid.net/video/streams/?xml=1&filter=live
但我就是无法连接,我可以通过谷歌等找到连接到它,但是当我尝试使用 XML 解析通过模拟器连接时,它不起作用。但我可以连接到 Google 天气等..
如果您想使用 XML 文档,请注意以下内容:
考虑抓取此页面以获取流数据吗?请改用我们的 XML feed:http://www.teamliquid.net/video/streams?xml=1&filter=live
需要 gzip 编码,还请发送一个有效的用户代理,其中包含您的应用程序/站点的名称和联系信息。此页面和 XML 每五分钟更新一次,请不要轮询频率超过每五分钟,否则您可能面临 IP 被封禁的风险。如果您有任何疑问,请PM R1CH。
所以我尝试了两种方法,第一个代码示例,使用 XMLReader:
private void DownloadXML()
{
URL website;
try{
website = new URL("http://www.teamliquid.net/video/streams/?xml=1&filter=live");
SAXParserFactory spf = SAXParserFactory.newInstance();
SAXParser sp = spf.newSAXParser();
XMLReader xr = sp.getXMLReader();
rp = new RetrievePlayers();
xr.setContentHandler(rp);
xr.parse(new InputSource(website.openStream()));
}catch(Exception e) {
setText(""+e);
}
}
第二个示例,使用 GZIPInputStream,似乎说明了有关 GZIP 加密的内容。
private void DownloadXML()
{
InputStream in = null;
GZIPInputStream gin = null;
URL website;
try{
website = new URL("http://www.teamliquid.net/video/streams/?xml=1&filter=live");
in = website.openStream();
gin = new GZIPInputStream(in);
BufferedReader reader = new BufferedReader(new InputStreamReader(gin));
setText(reader.readLine());
}catch(Exception e) {
setText(""+e);
}
}
这两个代码都会生成 java.io.Exception.FileNotFoundException 为什么我拿不到?我可以使用 Google chrome 查看 XML 文件:>
抱歉,我对 XML 还很陌生,只花了 2 天的时间来使用它:/
最佳答案
我就是那个人,难道你的 list 中没有设置互联网权限吗?我的意思是,您正在从网站进行解析,因此如果您没有访问网络的权限,那么您将不会获得解析响应。
只是一个理论,我正在努力帮助您解决问题:)
关于Java Android XML解析,无法连接网站?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7588228/