我们在网站上运行抓取工具以使我们的信息保持最新。像one这样的网站允许使用浏览器进行标准导航,但是在使用标准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无法验证服务器提供的证书时,它们会被抛出。但是,正如我上面提到的,谷歌浏览器导航到页面没有问题,它甚至可以验证证书(不会引发安全错误)。
有没有办法可以覆盖Java并允许它接收响应?
答案 0 :(得分:1)
我认为您尝试访问的IP是使用自签名证书。请尝试以下两个链接。
How can I use different certificates on specific connections?