Post使用curl,postman可以工作,但java给出了SSL错误

Post使用curl,postman可以工作,但java给出了SSL错误,java,rest,ssl,curl,Java,Rest,Ssl,Curl,我发出一个基本的post请求以获取Java中的令牌,并且我总是得到SSL证书握手错误: DefaultHttpClient httpclient = new DefaultHttpClient(); String encoding = "YXBwLmJidmEuS3JlZGlsdafasdfasdf0bzpUeHZUUDJLVEdiKkhmbGNJeHNUDQ1d2tEU1dGak9TUk1zSVN3d2owYzJlJE9adU5rVmVZ"; H

我发出一个基本的post请求以获取Java中的令牌,并且我总是得到SSL证书握手错误:

        DefaultHttpClient httpclient = new DefaultHttpClient();
        String encoding = "YXBwLmJidmEuS3JlZGlsdafasdfasdf0bzpUeHZUUDJLVEdiKkhmbGNJeHNUDQ1d2tEU1dGak9TUk1zSVN3d2owYzJlJE9adU5rVmVZ";
        HttpPost httppost = new HttpPost("https://connect.bbva.com/token?grant_type=client_credentials");
        httppost.setHeader("Authorization", "Basic " + encoding);
        HttpResponse response = httpclient.execute(httppost);
我也尝试过使用高级Rest客户端和shell命令执行同样的操作,它的效果非常好:

curl -X POST -i  -H "Content-Type: application/json" -H "Authorization: Basic YXBwLmJidmEuS3JlZGl0bzpUeHZUUDJLVEdiKkhmbGNJeHNUNHU2RDE3MkFFa2R2QDQ1d2tEU1dGak9TUk1zSVN3d2owYzJlJE9adU5rVmVZ" https://connect.bbva.com/token?grant_type=client_credentials
我还使用正确的truststore选项检查了curl,默认java使用该选项检查truststore是否没有问题,并且没有问题:

-cacerts=/usr/lib/jvm/java-8-oracle/jre/lib/security/cacerts
现在我也在Java
Java.net.URLConnection
库中使用它进行测试,但它不起作用

我还使用内容类型对其进行了测试,但没有结果:

("Content-Type", "application/json;charset=UTF-8");
我也在java7和java8上测试了这一点,oracle都是

我已经尝试了一切,作为一个基本的、平庸的java开发人员,我可以做到

顺便说一句,如果有帮助,我的curl响应会附带以下标题:

HTTP/1.1 200 OK
Date: Thu, 18 May 2017 09:29:11 GMT
Server: Apache-Coyote/1.1
X-Frame-Options: DENY
Strict-Transport-Security: max-age=63072000; includeSubdomains; preload
Cache-Control: no-cache
Pragma: no-cache
Cache-Control: no-cache, no-store, max-age=0, must-revalidate
Content-Type: application/json;charset=UTF-8
Expires: 0
Pragma: no-cache
X-Content-Type-Options: nosniff
X-Frame-Options: DENY
X-XSS-Protection: 1; mode=block
Content-Length: 751
我还使用以下工具检查了ssl调试日志:

System.setProperty("javax.net.debug", "all");

它使用正确的信任库

我只是通过将Java版本从
Java-oracle8
更改为
Java-openjdk8
来修复这个错误

你应该看看他说了什么,我到底应该从那里查什么。密钥库和信任库。这是我查过的。嗯,这取决于日志上写的内容。您应该看到加载的信任库的不同证书(您可以使用您认为的存储库以外的其他存储库),并且有一条明确的消息告诉您,如果这是问题所在,则该证书不受信任。@Aaron,当我运行此操作时,我看到了很多证书。