0

我在这里遇到了一个奇怪的问题。这是我用来获取 url 内容的代码:

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。这怎么可能呢?

4

1 回答 1

2

我认为您在谈论 URL 重定向,这是我遇到的一个问题。试试下面的代码:

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 页面”获取第二个 url,您需要获取名为“Location”的标题字段。

除非我误解了你的问题,我希望这会有所帮助!

于 2011-02-10T08:25:47.763 回答