【发布时间】:2013-12-07 14:06:37
【问题描述】:
以下代码 sn-p 是从HTTP URL 获取JSon 响应:
private static void getJson(String location) {
try {
try {
createSSLSocket();
URL url = new URL(
"https://abc.com/key/one");
HttpURLConnection conn = (HttpURLConnection) url
.openConnection();
conn.setRequestMethod("GET");
conn.setRequestProperty("Accept", "application/json");
if (conn.getResponseCode() != 200) {
throw new RuntimeException("Failed : HTTP error code : "
+ conn.getResponseCode());
}
BufferedReader br = new BufferedReader(new InputStreamReader(
(conn.getInputStream())));
String output;
System.out.println("Output from Server .... \n");
while ((output = br.readLine()) != null) {
System.out.println(output);
}
conn.disconnect();
} catch (MalformedURLException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
}
} catch (Exception ex) {
ex.printStackTrace();
}
}
但它会抛出 SSLHandshaking 异常,因为我没有在代码中添加自签名认证异常。我在C# 中做到了这一点,但在 java 中没有。我应该执行哪些步骤?需要你的建议:)
提前致谢。
【问题讨论】:
-
你的意思是服务器证书是自签名的,这就是连接失败的原因吗? SSLHandshakeException 中包含的失败原因是什么?
-
@jcs 是的,服务器端连接是自签名的,这是错误:
unable to find valid certification path to requested target -
@Jcs 我们可以用程序来做吗?
-
是的,我添加了一个带有代码 sn-p 的答案。
标签: java ssl https get ssl-certificate