我要调用一个安全的Web服务,使用证书,我有...服务器需要很长的时间与证书进行身份验证,并且,而这是确定的第一时间,用户将它称为遍地再次(在相同的“会话”),我感觉我应该能够重用的连接。

我有以下代码。

System.setProperty("javax.net.ssl.trustStorePassword", "");
System.setProperty("javax.net.ssl.trustStore", "trusted.cacerts");
System.setProperty("javax.net.ssl.keyStorePassword", "mypassword");
System.setProperty("javax.net.ssl.keyStore", "trusted.clientcerts");

URL url = new URL("https://remoteserver:8443/testservice");
HttpsURLConnection connection = (HttpsURLConnection)url.openConnection();
connection.setInstanceFollowRedirects(false);
connection.setRequestMethod("POST");
connection.setRequestProperty("Content-Type", "text/xml");
connection.setDoOutput(true);
OutputStream os = connection.getOutputStream();
os.write(bytes);

BufferedReader reader = new BufferedReader(new InputStreamReader(connection.getInputStream()));

String line;
while ((line = reader.readLine()) != null) {
System.out.println(line);
}

connection.disconnect();

这个伟大的工程......但速度很慢。就在认证大约需要10秒。这种内部认证是典型这里不能加快。但我不能再使用它以某种方式?点击  我试图把循环解决此代码中,url.connection和断开之间,以为我可能只是一次又一次的回忆,但失败(500)。我已经尝试了一下周围感动的事情,为了只是做一些第一次的命令,但它仍然失败。结果  我读到保持存活,但还没有找到的东西,这是任何很好的例子,以及如何使用它(如果是连的有效方法)。如果我通过HTML做到这一切,通过Firefox或IE浏览器,浏览器能够缓存证书,我猜,所以第一之后每次都是速度极快。我可以模仿一些如何?

有帮助吗?

解决方案

更好的替代方案是使用的HttpClient和其连接池机制。也看看HTTPS保持活动将帮助你。

其他提示

尝试只是不叫connection.disconnect() ...我不认为应该有任何需要你这样做。你应该,但是,请确保您关闭reader当你与它完成。

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top