0

我的程序应该向 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 的位置。)

请问有什么想法吗?

4

1 回答 1

0

HTTP 具有持久连接,而 SSL 具有可恢复的会话,这两者都专门用于防止您尝试完成的操作。

如果您深入研究服务器的内部结构,您可能会出于测试目的以某种方式将它们都关闭,但我真的看不出测试一个您会在生产中部署的配置有什么意义。

于 2012-08-23T22:48:13.383 回答