我发一个基本的帖子请求来获取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);
我尝试过使用Advanced Rest Client和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开发人员可以拥有。
顺便说一句,如果有帮助,我的卷曲响应会带有以下标题:
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-debug-logs:
System.setProperty("javax.net.debug", "all");
它使用正确的信任库。
答案 0 :(得分:0)
我修改此错误只是将Java版本从java-oracle8
更改为java-openjdk8
。