Android странная загрузка URL - PullRequest
       1

Android странная загрузка URL

0 голосов
/ 10 февраля 2011

У меня здесь странная проблема. Вот код, который я использую для получения содержимого URL:

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

У меня есть два URL, я хочу получить этот код. Оба содержат данные 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. Как это вообще возможно?

1 Ответ

2 голосов
/ 10 февраля 2011

Я думаю, вы говорите о переадресации 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, но вы хотите установить в falseзахватить второй URL.Чтобы получить этот второй URL со «странной HTML-страницы», вам нужно получить поле заголовка с именем «Местоположение» .

Если я не понял вашу проблему, надеюсь, это поможет!

...