2015-10-14 60 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