放上我的代码:
public static String Baidu(String keyword)throws Exception{
WebClient webclient = new WebClient();
//ssl认证
webclient.getOptions().setUseInsecureSSL(true);
//由于有的网页js书写不规范htmlunit会报错,所以去除这种错误让程序执行完全(不影响结果)
webclient.getOptions().setThrowExceptionOnScriptError(false);
webclient.getOptions().setThrowExceptionOnFailingStatusCode(false);
//不加载css
webclient.getOptions().setCssEnabled(false);
//由于是动态网页所以一定要加载js及执行
webclient.getOptions().setJavaScriptEnabled(true);
//打开百度高级搜索的网址
HtmlPage htmlpage = webclient.getPage("http://www.baidu.com/gaoji/advanced.html");
//获取网页from控件(f1为控件name)
HtmlForm form = htmlpage.getFormByName("f1");
HtmlSubmitInput button = form.getInputByValue("百度一下");
HtmlTextInput textField = form.getInputByName("q1");
textField.setValueAttribute(keyword);
final HtmlSelect htmlSelet=form.getSelectByName("rn");
htmlSelet.setDefaultValue("10");
//隐藏值
final HtmlHiddenInput hiddenInputtn = form.getInputByName("tn");
hiddenInputtn.setDefaultValue("baiduadv");
//发送请求(相当于点击百度一下按钮)获取返回后的网页
final HtmlPage page = button.click();
//获取网页的文本信息
String result = page.asText();
//获取网页源码
//String result = page.asXml();
System.out.println(result);
webclient.closeAllWindows();
return result;
}
这句话报错
HtmlPage htmlpage = webclient.getPage("http://www.baidu.com/gaoji/advanced.html");
报错信息:
com.gargoylesoftware.htmlunit.HtmlUnitHttpClientBuilder.getField(HttpWebConnection.java:1018)
at com.gargoylesoftware.htmlunit.HtmlUnitHttpClientBuilder.configureConnectionManager(HttpWebConnection.java:947)
at com.gargoylesoftware.htmlunit.HttpWebConnection.getResponse(HttpWebConnection.java:162)
at com.gargoylesoftware.htmlunit.WebClient.loadWebResponseFromWebConnection(WebClient.java:1297)
at com.gargoylesoftware.htmlunit.WebClient.loadWebResponse(WebClient.java:1214)
at com.gargoylesoftware.htmlunit.WebClient.getPage(WebClient.java:325)
at com.gargoylesoftware.htmlunit.WebClient.getPage(WebClient.java:394)
at com.gargoylesoftware.htmlunit.WebClient.getPage(WebClient.java:379)
at com.mytest.httpclient.TestHtmlunit.Baidu(TestHtmlunit.java:34)
at com.mytest.httpclient.TestHtmlunit.main(TestHtmlunit.java:15)
Caused by: java.lang.NoSuchFieldException: sslcontext
at java.lang.Class.getDeclaredField(Class.java:1882)
at com.gargoylesoftware.htmlunit.HtmlUnitHttpClientBuilder.getField(HttpWebConnection.java:1013)
... 9 more
版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。
我对你用的api不熟悉,但是我觉得报这个错,通常两种情况,1没有申明该属性,2获取该属性的方法和api提供的setter和getter方法不一致,你传入的参数反射调用的时候并不是api提供的,比如多了空格,大小写一类的
嗯 感谢,最后是换了jdk就解决了 具体什么情况,还是没明白