2011-02-10 9 views
0

私はここで奇妙な問題を抱えています。ここでは、コードだ、私は、URLのコンテンツを取得するために使用しています:Androidの奇妙なURL取得

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

私は2つのURLを持って、私はこのコードを取得したいです。どちらもxmlデータを含んでいます。具体的には、最初のものは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ページが取得されることがわかりました。どのようにそれを可能にすることができますか?

答えて

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つの段階で起こる:デフォルトのInstanceFollowRedirectsによって

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

がtrueに設定されていますが、第二をキャプチャするためにfalseに設定したいですurl。 「奇妙なhtmlページ」からその2番目のURLを取得できるようにするには、という名前のヘッダーフィールドを「Location」にする必要があります。

あなたの問題を誤解していない限り、私はこれが助けてくれることを願っています!

関連する問題