开发者社区 问答 正文

求大神指点!htmlunit报错: java.lang.NoSuchFieldE?400报错

放上我的代码:

    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

 

展开
收起
爱吃鱼的程序员 2020-06-06 21:01:40 753 分享 版权
1 条回答
写回答
取消 提交回答
  • https://developer.aliyun.com/profile/5yerqm5bn5yqg?spm=a2c6h.12873639.0.0.6eae304abcjaIB
                        我对你用的api不熟悉,但是我觉得报这个错,通常两种情况,1没有申明该属性,2获取该属性的方法和api提供的setter和getter方法不一致,你传入的参数反射调用的时候并不是api提供的,比如多了空格,大小写一类的 
                    
    
                            嗯 感谢,最后是换了jdk就解决了 具体什么情况,还是没明白
    
    2020-06-06 21:01:51
    赞同 展开评论
问答标签:
问答地址: