我需要在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 :(得分: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);
如果您需要这样做,您也可以捕获响应和内容。