如何有选择地禁用 Java 中单个 HttpURLConnection 上的 keep-alive 使用?

Sim*_*dro 5 java keep-alive httpurlconnection

我面临的场景是,我们使用一个库,该库使用 HttpURLConnection 对同一主机执行多个请求。对于其中一些请求(非全部!),我需要禁用保持活动状态,以便在发送请求后不会重用连接。我的第一个赌注是配置以便发送以下标头:

Connection: close
Run Code Online (Sandbox Code Playgroud)

但是此标头不会更改 HttpURLConnection 的行为。相反,这会引起问题,因为:

  • 服务器读取标头并认为客户端将关闭连接
  • 客户端 (HttpURLConnection) 不会解释它,因此会重新使用该连接(与它向服务器声明的相反!)

根据官方文档:http://docs.oracle.com/javase/7/docs/technotes/guides/net/http-keepalive.html 有一个系统属性“http.keepAlive”,但它是全局的并且不适合我的要求。另外根据上面的内容,我们可以简单地不读取响应正文,从而导致连接被废弃,但是我们需要读取响应,而且这种方式不可行。

在使用单个请求响应后,我们可以使用任何标头/属性/任何内容来强制 JVM HttpURLConnection 关闭连接吗?