我在HTTPS上使用公共(无身份验证)RESTful Web服务: https://api.kraken.com/0/public/Time
如果我通过谷歌浏览器或高级REST客户端(Chrome插件)发出简单的GET请求,一切正常。
如果我使用Java,我会得到 HTTP 403错误。 我用HttpsUrlConnection和Jersey试过了 - 同样的问题。
String response = Client.create().resource("https://api.kraken.com/0/public/Time").get(String.class);
有什么想法吗?无法确定HTTP请求在Java / Jersey和高级REST客户端之间的差异。
答案 0 :(得分:0)
如果在使用HTTPS URL连接时禁止请求,请检查SSL验证是否已通过。在java中,您可以使用
绕过此SSL验证HttpsURLConnection TrustManager[] trustAllCerts = new TrustManager[] { new X509TrustManager()
{
@Override
public java.security.cert.X509Certificate[] getAcceptedIssuers()
{
return null;
}
@Override
public void checkClientTrusted(java.security.cert.X509Certificate[] certs, String authType)
{
}
@Override
public void checkServerTrusted(java.security.cert.X509Certificate[] certs, String authType)
{
}
} };
SSLContext sc = SSLContext.getInstance("SSL");
sc.init(null, trustAllCerts, new java.security.SecureRandom());
HttpsURLConnection.setDefaultSSLSocketFactory(sc.getSocketFactory());
答案 1 :(得分:0)
您使用的是哪种版型的球衣?你在拉进正确的进口吗?
以下适用于球衣2.5:
String response = ClientBuilder.newClient()
.target("https://api.kraken.com/0/public/Time")
.request(MediaType.APPLICATION_JSON).get(String.class);
这让我感觉像是:
{“error”:[],“result”:{“unixtime”:1393441220,“rfc1123”:“Wed,26 Feb 14 19:00:20 +0000”}}