0

我正在尝试使用 Apache Commons VFS从http://openexchangerates.org API 获取数据。我收到的错误表明它正在尝试使用 SSL 验证——这不是我通过网站计划提供的。有没有办法可以“强制”VFS 使用 http 而不是 https?

巨大堆栈跟踪的相关点包括在下面 - 如果需要,可以提供更多信息:

org.apache.commons.vfs2.VFS.getManager().resolveFile("http://openexchangerates.org/api/latest.json?api_id=MY_APP_ID")
org.apache.commons.vfs2.FileSystemException: Could not connect to HTTP server on "openexchangerates.org".

Caused by: 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

Caused by: sun.security.validator.ValidatorException: PKIX path building failed: sun.security.provider.certpath.SunCertPathBuilderException: unable to find valid certification path to requested target

Caused by: sun.security.provider.certpath.SunCertPathBuilderException: unable to find valid certification path to requested target
4

1 回答 1

1

该网站将重定向发送到 https 版本。因此它不支持http。http 客户端将自动遵循此重定向,您需要对其进行配置以进行正确验证。

这是我如何检查的:

$ curl -v http://openexchangerates.org/api/latest.json?api_id=MY_APP_ID
* Connected to openexchangerates.org (185.24.96.251) port 80 (#0)
> GET /api/latest.json?api_id=MY_APP_ID HTTP/1.1
> User-Agent: curl/7.30.0
> Host: openexchangerates.org
> Accept: */*

< HTTP/1.1 301 Moved Permanently
< Date: Mon, 05 Jan 2015 23:37:18 GMT
< Server: Apache
< Location: https://openexchangerates.org?missing_app_id=true
于 2015-01-05T23:40:40.123 回答