【发布时间】:2011-09-28 19:04:45
【问题描述】:
被这个问题困扰了一整天,一直在尝试从这个网站检索 XML:
http://www.teamliquid.net/video/streams/?xml=1&filter=live
但是我无法连接,我可以通过 google 等找到连接,但是当我尝试使用 XML 解析通过模拟器连接时,它不起作用。但我可以连接到 Google 天气等。
如果你想使用 XML 文档,下面是这样说的:
考虑抓取此页面以获取流数据?请改用我们的 XML 提要:http://www.teamliquid.net/video/streams?xml=1&filter=live
gzip 编码是必需的,请同时发送一个有效的用户代理,其中包含您的应用程序/站点的名称和联系信息。此页面和 XML 每五分钟更新一次,请不要比每五分钟更频繁地进行轮询,否则您可能会面临被 IP 封禁的风险。如有任何问题,请PM R1CH。
所以我尝试了 2 种方法,第一个代码示例,使用 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 天时间使用它:/
【问题讨论】: