用Java提交HTML表单

时间:2012-01-28 22:13:04

标签: java forms post submit httpclient

我正在尝试填写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" /> 

2 个答案:

答案 0 :(得分:3)

您没有使用HttpClient“点击按钮”;它只是HTTP的东西,它与JS和DOM无关。

如果您想模拟浏览器,请使用类似JWebUnit的内容,它可以驱动HttpClient和Selenium,并提供JavaScript支持。

答案 1 :(得分:1)

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

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