我在这里遇到一个奇怪的问题。这是代码,我用来获取网址内容:
URL u = new URL(url);
InputStream is = new BufferedInputStream(u.openStream());
我有两个网址,我想用这个代码获取。两者都包含xml数据。具体而言,第一个是http://www.berlingske.dk/unwire/latest/news_article/2/10
,第二个是http://www.bt.dk/mecommobile/latest/news_article/1368/10?output_type=xml
。第一个正确获取,第二个没有。我添加了一些日志记录,并发现,对于第二个url,一些奇怪的html页面被获取,而不是预期的xml。怎么可能这样呢?
答案 0 :(得分:2)
我认为你在谈论网址重定向,这是我遇到的一个问题。请尝试以下代码:
URL url = new URL(url);
HttpURLConnection ucon = (HttpURLConnection) url.openConnection();
ucon.setInstanceFollowRedirects(false);
URL secondURL = new URL(ucon.getHeaderField("Location"));
URLConnection conn = secondURL.openConnection();
InputStream is = new BufferedInputStream(conn.openStream());
这里的“神奇”发生在以下两个步骤中:
ucon.setInstanceFollowRedirects(false);
URL secondURL = new URL(ucon.getHeaderField("Location"));
默认情况下,InstanceFollowRedirects设置为true,但您希望将其设置为false以捕获第二个URL。为了能够从“奇怪的html页面”获取第二个网址,您需要获得名为“位置”的标题字段。
除非我误解了你的问题,否则我希望这有帮助!