java - 如何使用 Jersey Client 为每个 POST 请求建立新连接

标签 java ssl https jersey

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

有什么想法吗?

最佳答案

HTTP 具有持久连接,而 SSL 具有可恢复 session ,两者都是专门用于防止您试图完成的事情。

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

关于java - 如何使用 Jersey Client 为每个 POST 请求建立新连接,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12092977/

相关文章:

java - 类似旅行顾问的对话框,并在 Android 中显示自定义背景或启动画面

c# - 新的 SSL 证书破坏了应用程序使用 WSDL 的能力

java - 为基于 netty 的 EPPServer 添加 SSL 支持时,客户端 socket.startHandshake() 失败。

java - java中MQTT的TLS/SSL连接

iis - 当我安装自签名证书时,我的网站在 IIS 8 中停止

ruby - 如何让 Sinatra 通过 HTTPS/SSL 工作?

go - 是什么原因导致瓮:acme:error:unauthorized 403 error in golang's acme/autocert?

java - 无法在 Android 模拟器中滚动

java - 如何打印HashMap元素从最大到最小

java - Android : java. lang.NullPointerException: CameraUpdateFactory 未初始化