Android http keepalive解决方案,但它是永久性的吗?
作者:互联网
我有一个搜索按钮,每次按下它都会访问服务器.问题是,如果我连续多次按它,它将正常工作.但是,如果我等待5秒钟,第一次按下将无效.它只是没有收到回应.第二次按下将按下,按下后续按钮,直到我等待一段时间(~5秒)
所以基本上,除非你在5秒内不断寻找新的东西,否则你的第一次按下按钮将不会做任何事情.
这解决了
System.setProperty("http.keepAlive", "false");
但是,我已经读过,这消除了每次单击该按钮时必须建立新TCP连接的持久连接.这个速度较慢但不是马车.
这是一个错误的解决方案?我已经读到这并没有真正解决任何问题.希望得到一些帮助,谢谢.
解决方法:
你说:
However, if I wait 5 seconds, the first press won’t work. It just doesn’t receive a response.
我认为服务器甚至没有收到您的请求.我认为将http.keepAlive设置为false是一个很好的解决方法.我花了相当多的时间来研究这个问题,这显然是Android库中的一个错误.
原因是服务器不希望保持所有这些连接打开,因为它们可能有很多,所以它会不时地关闭其中一些连接.但是,Android库中使用的连接池不希望接受这个事实并尝试使用旧的封闭连接.
取消设置http.keepAlive是一种解决方法而不是解决方案,但是您确实获得了可靠的HTTP处理,尽管有一些性能成本.
标签:android,httpurlconnection,keep-alive 来源: https://codeday.me/bug/20190521/1147206.html