Различное поведение между моим Java-приложением и моим навигатором при запросе URL - PullRequest
0 голосов
/ 14 декабря 2010

Я бы хотел запросить портлет из метеослужбы. Но так как мой навигатор выдает мне правильную страницу, ява-приложение этого не делает.

Вот мой код без try / catch:

public static void main(String[] args) {
  // The portlet URL
  String cookieUrl = "http://france.meteofrance.com/france/meteo?PREVISIONS_PORTLET.path=previsionspluie/290190";
  HttpURLConnection connection = (HttpURLConnection) new URL(url).openConnection();
  // Some proxy configuration

  // Basic properties set to perform my task, but they might be useless as it does not work as I would
  connection.setRequestProperty("Accept-Charset", "UTF-8");
  connection.setRequestProperty("User-Agent", "Mozilla/5.0 (Windows; U; Windows NT 5.1; en-US; rv:1.9.2.12) Gecko/20101026 Firefox/3.6.12");

  System.out.println(handler.getHtml(reader));
}

private String getHtml(BufferedReader reader)
{
  String html = "";
  for (String line; (line = reader.readLine()) != null;)
    html += line + "\n";
  return html;
}

Вы можете проверить это с помощью URL-адреса порта, приведенного в качестве примера. В навигаторе ответ содержит правильное «prevision de pluie pour Brest». В приложении Java ответ содержит эту страницу: http://france.meteofrance.com/NoCookie.htm

Кажется, это вопрос печенья. Но как я мог справиться с этим, поскольку мои первые попытки получить cookie-файлы и отправить их обратно оказались безуспешными.

Любая помощь, пожалуйста?

1 Ответ

1 голос
/ 14 декабря 2010

Похоже, что сайт, к которому вы пытаетесь получить доступ, использует Cookies , которые не поддерживаются HttpURLConnection.Чтобы обойти эту проблему, используйте библиотеку типа HtmlUnit , которая имитирует браузер (поддерживает куки, javascript и т. Д.).

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...