0

ここで奇妙な問題が発生しています。URLコンテンツを取得するために使用しているコードは次のとおりです。

URL u = new URL(url);
InputStream is = new BufferedInputStream(u.openStream());

私は 2 つの URL を持っています。このコードでフェッチしたいと思います。どちらにも xml データが含まれています。具体的には、1つ目はhttp://www.berlingske.dk/unwire/latest/news_article/2/10、2つ目はhttp://www.bt.dk/mecommobile/latest/news_article/1368/10?output_type=xmlです。最初のものは正しくフェッチされますが、2 番目のものはそうではありません。ロギングを追加したところ、2 番目の URL で、予想される xml ではなく、奇妙な html ページがフェッチされることがわかりました。どうすればそれが可能になるのでしょうか?

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());

ここでの「魔法」は、次の 2 つのステップで発生します。

ucon.setInstanceFollowRedirects(false);
URL secondURL = new URL(ucon.getHeaderField("Location"));

デフォルトでは、InstanceFollowRedirects は true に設定されていますが、2 番目の URL を取得するには false に設定する必要があります。「奇妙な html ページ」から 2 番目の URL を取得できるようにするには、「Location」というヘッダー フィールドを取得する必要があります。

私があなたの問題を誤解していない限り、これがお役に立てば幸いです!

于 2011-02-10T08:25:47.763 に答える