查询网址时,我的java应用程序和导航器之间的行为不同

时间:2010-12-14 15:36:41

标签: java cookies portlet

我想从meteo服务查询portlet。但是当我的导航器给我正确的页面时,我的java应用程序没有。

这是我的代码,没有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;
}

您可以使用portle url作为示例进行测试。 在导航器中,响应包含正确的“prevision de pluie pour Brest”。 在Java应用程序中,响应包含此页面:http://france.meteofrance.com/NoCookie.htm

这似乎是一个饼干问题。但是我怎么能处理它,因为我第一次尝试获取cookie并将其发送回来是不成功的。

请帮忙吗?

1 个答案:

答案 0 :(得分:1)

您尝试访问的网站似乎依赖于HttpURLConnection不支持的Cookies。解决此问题的方法是使用像HtmlUnit这样的库来模拟浏览器(支持cookie,javascript等)。