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

时间:2016-04-11 14:19:11

标签: java httpurlconnection keep-alive

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

Connection: close

但是这个标题确实没有改变HttpURLConnection的行为。相反,这会导致问题,因为:

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

根据官方文件:http://docs.oracle.com/javase/7/docs/technotes/guides/net/http-keepalive.html 有一个系统属性" http.keepAlive"但这是全球性的,不符合我的要求。 同样根据上面我们可能根本就没有读取响应体,从而导致连接被废弃,但是我们需要读取响应,这种方式也是不可行的。

任何标头/属性/我们可以使用什么来强制JVM HttpURLConnection在将它用于单个请求 - 响应后关闭连接?

0 个答案:

没有答案