使用okhttp时,android是必需的http.keepalive false

时间:2014-11-18 14:33:30

标签: android httpurlconnection keep-alive okhttp

我最近接手了一个Android项目。我们希望尝试加快我们的同步流程。这是当前的代码:

System.setProperty("http.keepAlive", "false");

我没有写代码,所以我真的不知道这个代码被添加的原因,但我已经做了一些谷歌搜索,似乎有必要保持连接工作:

http://android-developers.blogspot.com/2011/09/androids-http-clients.html

HttpUrlConnection.openConnection fails second time

当我们将其设置为true时,同步过程会大幅加快,但我不想将其设置为true,并且不会对结果有一个正确的认识。有谁知道是否仍然需要将http.keepAlive设置为false?如果是这样,对于所有Android设备?是否存在不再重要的API级别?

通过代码历史记录,我们看到了http://square.github.io/okhttp/的整合位置。当我们使用OkHTTP时,是否仍然需要将此设置保持为假?

谢谢!

2 个答案:

答案 0 :(得分:2)

您可以毫无问题地将其更改为truehttp.keepAlive只是告诉客户端它可以保持与服务器的连接打开,而不是每次执行某些操作时重新协商连接。启用它不应该有任何后果;至少,不是我的经验。

答案 1 :(得分:2)

这个问题相当陈旧,但我想为其他人指出,简单地禁用该行并不总是非常安全。一些开发人员这样做的原因是因为客户端可能正在与不正确设置响应中的Content-Length标头的服务器通信。

如果标头中的值低于服务器发送的实际字节数,则额外字节将作为对下一个请求的响应的第一个字节包括在内,这可能使该响应无效。

禁用keep-alive是一种确保每个请求都是自包含的方法,可以防止一个响应中的错误影响任何其他请求。