用Java提交HTML表单
我试图填写一个HTML表单,按下表单的提交按钮,然后从中得到响应 填写表单非常有效,但我不知道如何按下页面上的提交按钮 我正在使用ApacheHttpClient库 我的代码是:用Java提交HTML表单,java,forms,post,submit,httpclient,Java,Forms,Post,Submit,Httpclient,我试图填写一个HTML表单,按下表单的提交按钮,然后从中得到响应 填写表单非常有效,但我不知道如何按下页面上的提交按钮 我正在使用ApacheHttpClient库 我的代码是: httpclient = new DefaultHttpClient(); HttpPost httpost = new HttpPost(pUrl); List <NameValuePair> nvps = new ArrayList <NameVa
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();
httpclient=newdefaulthttpclient();
HttpPost HttpPost=新的HttpPost(pUrl);
List-nvps=newarraylist();
添加(新的BasicNameValuePair(“过滤器\响应\时间\ http”,“1”);
添加(新的BasicNameValuePair(“filter_port”,“80”);
添加(新的BasicNameValuePair(“过滤国家”、“美国”);
添加(新的BasicNameValuePair(“提交”、“ANZEGN”);
setEntity(新的UrlEncodedFormEntity(nvps,HTTP.UTF_8));
response=httpclient.execute(httpost);
entity=response.getEntity();
“提交”按钮的代码为:
<input onclick="doSubmit();" id="submit" type="submit" value="Anzeigen" name="submit" />
您不需要使用HttpClient“单击按钮”;它所做的只是HTTP内容,与JS和DOM无关
如果您想模拟浏览器,请使用类似的工具,它可以驱动HttpClient和Selenium,并提供JavaScript支持。单击submit按钮时会调用JavaScript函数。您不能使用java代码模拟这种行为
为此,您需要使用能够处理javascript的无头浏览器。UrlEncodedFormEntity的第二个参数应该是
java.nio.charset.StandardCharsets.UTF_8
,因为HTTP.UTF_8
已被弃用。