2015-10-14 61 views
0

我需要在Java中獲取網頁表單的輸出,但是存在問題。我的代碼如下。在Java中提交表格

String query = "input=mysearch"; 
    String charset = "UTF-8"; 
    String str; 


    URLConnection connection = new URL("http://www.webpage.com/").openConnection(); 
    connection.setDoOutput(true); // Triggers POST method. 
    connection.setRequestProperty("Accept-Charset", charset); 
    connection.setRequestProperty("Content-Type", "application/x-www-form-urlencoded;charset=" + charset); 
    connection.getOutputStream().write(query.getBytes(charset)); 
    BufferedReader in = new BufferedReader(
      new InputStreamReader(connection.getInputStream(), "UTF-8") 
    ); 


    while ((str = in.readLine()) != null) { 
     System.out.println(str); 
    } 

問題是在提交按鈕上的網頁看起來像這樣

<a href="javascript:document.forms[0].submit();" type="submit" class="btn" id="search-btn"><i class="demo-icon icon-search"></i></a> 

所以它是沒有提交。而不是提交不同的按鈕,它屬於不同的形式。

<input type="submit" name="btnAdmin" value="Submit" id="btnAdmin" class="button" style="width:100%;" /> 

任何建議如何提交正確的表單?

感謝您的幫助

回答

0

我強烈建議HttpClient Apache的。它爲你大大簡化了這一點。以下是你可能會決定如何提交表單(主要來自該網站的教程部分獲取):

List<NameValuePair> formparams = new ArrayList<NameValuePair>(); 
formparams.add(new BasicNameValuePair("param1", "value1")); 
formparams.add(new BasicNameValuePair("param2", "value2")); 
UrlEncodedFormEntity entity = new UrlEncodedFormEntity(formparams, Consts.UTF_8); 
HttpPost httppost = new HttpPost("http://website.com/form_action_attribute.php"); 
httppost.setEntity(entity); 

您可以捕獲響應和東西太多,如果你需要做的。

+0

實際上,它不是一個http post提交,而只是一個從文本框中獲取值的javascript函數。: - /如何在Java中調用此javacript函數的任何可能性? – Neonik