2012-01-28 77 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