【问题标题】:JavaLite error Failed URL when requesting HTTPS RESTful请求 HTTPS RESTful 时出现 JavaLite 错误 URL 失败
【发布时间】:2018-03-23 04:46:57
【问题描述】:

我正在使用 JavaLite 实现,并且在请求 HTTP 服务时一切正常,但在尝试从服务的 HTTPS 版本获取数据时,我得到 HttpException“失败的 URL”。

这是我的代码:

Get get = Http.get(url + "/eds/api/v1/certificados");
get.header("Authorization", "Basic " + Credentials);
get.header("APIKey", APIKey);
get.header("Accept", "application/json");
            
System.out.println(get.text());

也试过

String test = Http.get(url + "/eds/api/v1/certificados").header("Authorization", "Basic " + Credentials).header("APIKey", APIKey).header("Accept", "application/json").text();

它们的行为方式相同,如果 URL 是 HTTP,我可以获取数据,如果 URL 是 HTTPS,则捕获“失败的 URL”。我已经用 SOAPui 测试了 REST 服务,并且 HTTPS 服务器工作正常。

在尝试使用标头在 HTTPS 上发送 GET 时我缺少什么建议?

【问题讨论】:

  • 您需要做更多的研究:1. 提供完整的堆栈跟踪,2. 尝试使用纯 Java。我感觉你有一些证书问题。
  • 感谢 Igor,确实如此,尝试使用 curl 时,我需要使用 --insecure 选项来覆盖证书,如何使用 JavaLite 做同样的事情?
  • 我从 stackoverflow.com/questions/2893819/… 找到了这段代码,它就像一个魅力,至少对于我需要的东西

标签: rest javalite


【解决方案1】:

我将建议该站点的数字证书未由 Java JRE 证书存储中包含的证书颁发机构签名。

你可以这样做:

  1. 使用浏览器浏览网站的证书,包括证书链,一直到根证书颁发机构
  2. 了解本地安装了哪些 CA 证书。

Java 的文件是:

$JAVA_HOME/jre/lib/security/cacerts

你需要运行这个命令:

keytool  -list -keystore cacerts

当提示输入密码时,只需按 Enter。

如果您没有看到用于签署站点证书的 CA 证书,则会出现此错误。

如何解决:

  1. 使用众所周知的 CA 为您的站点获取证书,并确保它已经存在于您的 Java 证书数据库中。

或:

  1. 使用浏览器从站点获取证书,并使用以下命令将其导入本地 Java 数据库:

    keytool -importcert ...

有关keytool 计划的更多信息:

 keytool --help

【讨论】:

    猜你喜欢
    • 2019-01-19
    • 2017-03-20
    • 2018-04-02
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2010-11-22
    • 2021-04-23
    • 2021-05-10
    相关资源
    最近更新 更多