用Java提交表单

时间:2015-10-14 09:41:21

标签: javascript java forms

我需要在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%;" />

有任何建议我应该如何提交正确的表格?

感谢您的帮助

1 个答案:

答案 0 :(得分:0)

我强烈推荐Apache的HttpClient。它大大简化了这一点。以下是您决定提交表单的方式(主要来自网站的教程部分):

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);

如果您需要这样做,您也可以捕获响应和内容。