2012-01-28 75 views
4

我想填写一个HTML表单,按下表单的提交按钮,然后得到它的响应。在Java中提交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" /> 
+0

'UrlEncodedFormEntity'的第二个参数应该是'java.nio.charset.StandardCharsets.UTF_8',因为'HTTP.UTF_8'已被弃用。 – 0x6B6F77616C74 2013-07-06 19:36:14

回答

3

你不 “点击按钮” 与HttpClient的;它所做的只是HTTP的东西,这与JS和DOM无关。

如果要模拟浏览器,请使用类似JWebUnit的驱动程序,它可以同时驱动HttpClient和Selenium,并提供JavaScript支持。

1

您的提交按钮在点击时调用JavaScript函数。你不能用你的java代码来模拟这种行为。

因此,您需要使用可以处理javascript的无头浏览器,如htmlunit