响应在Java中通过HTTPS失败

我们在网站上运行抓取工具以使我们的信息保持最新。 像这样的一些网站允许使用浏览器进行标准导航,但是在使用标准Java库时它们不会发送响应。 这是我用来访问主页(索引)页面的代码,

try { URL my_url = new URL("https://www.capitallightingfixture.com"); URLConnection u = my_url.openConnection(); if ( u instanceof HttpURLConnection ) { HttpURLConnection http_u = (HttpURLConnection)u; System.out.println(http_u.getResponseCode()); } } catch (Exception e) { e.printStackTrace(); } 

运行时,该程序将抛出以下错误

javax.net.ssl.SSLHandshakeException: sun.security.validator.ValidatorException: PKIX path building failed: sun.security.provider.certpath.SunCertPathBuilderException: unable to find valid certification path to requested target

根据我对错误的理解,当Java无法validation服务器提供的证书时,它们会被抛出。 但是,正如我上面提到的,谷歌浏览器导航到页面没有问题,它甚至可以validation证书(不会引发安全错误)。

有没有办法可以覆盖Java并允许它接收响应?

我认为您尝试访问的IP是使用自签名证书。 请尝试以下两个链接。

如何在特定连接上使用不同的证书?

在java中使用自签名证书