【问题标题】:Submit HTML Form in Java用 Java 提交 HTML 表单
【发布时间】:2012-02-21 08:59:42
【问题描述】:

我正在尝试填写 HTML 表单,按下表单的提交按钮,然后从中获取响应。

填写表格效果很好,但我不知道如何按下页面上的提交按钮。

我正在使用 apache httpclient 库。

我的代码是:

        httpclient = new DefaultHttpClient();
        HttpPost httpost = new HttpPost(pUrl);

        List <NameValuePair> nvps = new ArrayList <NameValuePair>();
        nvps.add(new BasicNameValuePair("filter_response_time_http", "1"));
        nvps.add(new BasicNameValuePair("filter_port", "80"));
        nvps.add(new BasicNameValuePair("filter_country", "US"));
        nvps.add(new BasicNameValuePair("submit", "Anzeigen"));

        httpost.setEntity(new UrlEncodedFormEntity(nvps, HTTP.UTF_8));

        response = httpclient.execute(httpost);


        entity = response.getEntity();

提交按钮的代码是:

<input onclick="doSubmit();" id="submit" type="submit" value="Anzeigen" name="submit" /> 

【问题讨论】:

  • UrlEncodedFormEntity 的第二个参数应该是 java.nio.charset.StandardCharsets.UTF_8,因为 HTTP.UTF_8 已被弃用。

标签: java forms post submit httpclient


【解决方案1】:

您的提交按钮在单击时会调用一个 javascript 函数。您无法使用您的 java 代码模拟该行为。

为此,您需要使用像 htmlunit 这样可以处理 javascript 的无头浏览器。

【讨论】:

    【解决方案2】:

    您不会使用 HttpClient“单击按钮”;它所做的只是 HTTP 的东西,与 JS 和 DOM 无关。

    如果您想模拟浏览器,请使用 JWebUnit 之类的东西,它可以同时驱动 HttpClient 和 Selenium,并提供 JavaScript 支持。

    【讨论】:

      猜你喜欢
      • 2016-01-09
      • 2011-03-22
      • 1970-01-01
      • 1970-01-01
      • 2015-02-14
      • 2011-12-02
      • 2017-02-17
      • 1970-01-01
      • 2013-04-15
      相关资源
      最近更新 更多