HttpURLConnection长连接问题 Keep-Alive

cyberkit 2015-03-22 01:59:22
网上所有的代码都是setRequestProperty("Connection", "Keep-Alive")
长连接嘛,我懂,但用起来就会有问题

一开始是OK,但如果用户长时间无操作,机器休眠一段再执行代码就报错了IO异常啦

我的解决方法是不用Keep-Alive,改为Close,这样世界就清静了
但既然全世界都在用Keep-Alive,为什么我就不行?
我的姿势哪里不对啊?
...全文
3913 5 打赏 收藏 转发到动态 举报
写回复
用AI写文章
5 条回复
切换为时间正序
请发表友善的回复…
发表回复
开发者_android 2015-03-31
  • 打赏
  • 举报
回复
另外,可以尝试一下设置keep-alive的时间看看。
开发者_android 2015-03-31
  • 打赏
  • 举报
回复
是否能完成一个完整的Keep- Alive连接和服务器设置相关。
cyberkit 2015-03-31
  • 打赏
  • 举报
回复
引用 2 楼 fullfree 的回复:
http的keep-alive是说,你发出的这个请求建议服务器端保留连接,这样下次你向同一个服务器发请求时可以走同一个连接。这里的连接是指tcp连接。首先,http是无状态的;其次,keep-alive只是一个建议,是否真能保持连接取决于双方的实现。假如服务器不支持,你就算请求头里有keep-alive,服务器发回的响应也可能是close。 你遇到的现象是完全正常的。假如你非要基于http的所谓长连接,websocket协议已经基本完善,且许多服务器端都能支持。
难道HttpURLConnection不知道服务器已经断开了tcp连接,不会自动重新连接? 我要自己处理这个异常?
fullfree 2015-03-26
  • 打赏
  • 举报
回复
http的keep-alive是说,你发出的这个请求建议服务器端保留连接,这样下次你向同一个服务器发请求时可以走同一个连接。这里的连接是指tcp连接。首先,http是无状态的;其次,keep-alive只是一个建议,是否真能保持连接取决于双方的实现。假如服务器不支持,你就算请求头里有keep-alive,服务器发回的响应也可能是close。 你遇到的现象是完全正常的。假如你非要基于http的所谓长连接,websocket协议已经基本完善,且许多服务器端都能支持。
Kimokiko 2015-03-26
  • 打赏
  • 举报
回复
socket好了

80,351

社区成员

发帖
与我相关
我的任务
社区描述
移动平台 Android
androidandroid-studioandroidx 技术论坛(原bbs)
社区管理员
  • Android
  • yechaoa
  • 失落夏天
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧