我的程序应该向https站点发出多个POST请求,每次执行新请求时我都需要它进行SSL握手。 但是,它似乎只是第一次进行握手,然后使用现有连接执行其他请求而无需新的握手。我确信它以后不会进行握手,因为第一次执行请求并接收响应大约需要700毫秒,但后来只需要大约30毫秒。
以下是我如何初始化客户端:(我在这里错过了一些属性吗?)
SSLContext context = SSLContext.getInstance("SSL");
context.init(kms, trustAllCerts, null);
SSLContext.setDefault(context);
ClientConfig config = new DefaultClientConfig();
config.getProperties().put(ClientConfig.PROPERTY_READ_TIMEOUT, timeout * 1000);
config.getProperties().put(ClientConfig.PROPERTY_FOLLOW_REDIRECTS, false);
config.getFeatures().put(ClientConfig.FEATURE_DISABLE_XML_SECURITY, true);
client = Client.create(config);
以下是我提出实际要求的方式:
ClientResponse cr = service.type(MediaType.APPLICATION_XML).accept(MediaType.APPLICATION_XML).post(ClientResponse.class, batch);
(服务变量是Builder类,它创建ClientRequest。它是指定URL的位置。)
请问任何想法?
答案 0 :(得分:0)
HTTP具有持久连接,并且SSL具有可恢复的会话,这两者都专门用于阻止您尝试完成的任务。
您可能把他们都关在某种程度上为你的测试目的,如果你深入到你的服务器的内部结构,但我真的没有看到测试你会疯部署在生产环境配置的点。