当前位置: 首页 > 面试题库 >

HttpURLConnection超时默认值

云联
2023-03-14
问题内容

我似乎有时会遇到一些tcp请求被“卡住”的麻烦,就像它正在等待一些响应,但连接已被“切断”,因此响应永远不会到来。这是具有默认超时的HttpURLConnection的预期行为吗?是否设置了明智的默认设置,以便默认情况下我无法进入这种奇怪的“挂起”情况?


问题答案:

出现HttpURLConnection的“默认”超时为零,表示“无超时”。

不幸的是,根据我的经验,根据您与服务器的连接情况,使用这些默认值可能会导致不稳定状态。如果您使用HttpURLConnection且未明确设置(至少读取)超时,则您的连接可能会进入永久性的陈旧状态。默认。因此,请始终将其设置setReadTimeout为“
something”,否则您可能会孤立连接(以及可能取决于应用程序的运行方式的线程)。

从试验和错误setConnectTimeout看来,不需要调用是因为套接字本身似乎内置了2分钟的“连接超时”(至少在OS X中如此)。

您还可以通过调整系统属性来为超时设置“全局默认值” 。

修复/预后:始终设置一个readTimeout(即使非常大),或者使用其他客户端来设置SO_KEEPALIVE。没有这些默认值会导致没有它的线程“永远”挂起。



 类似资料:
  • 因此,我使用来处理HTTP请求,它基本上使用的。 当设置了“读”超时,如果服务器连接已经建立,但服务器在应答之前等待/Hibernate/延迟响应“超时”时间(因此引发“读”异常而不是“连接”异常),则在引发该异常之前发送另一个(静默)请求,导致两个类似的请求,这是不可接受的。 我在寻找什么样的解决方案? 好吧,一个可以很好地解决这个问题/bug的解决方案,就像这里解释的修复一样(但我再次认为这在

  • 问题内容: 默认情况下,PHP会话是否超时-即,如果我没有任何编码,最终在一段时间不活动后最终将“注销”用户吗? 问题答案: 这取决于服务器配置或相关指令的session.gc_maxlifetime在。 通常情况下,默认值为24分钟(1440秒),但是您的虚拟主机可能已将默认值更改为其他值。

  • 问题内容: 我收到了一个我无法复制的错误报告,但是ajax调用超时是当前的最佳猜测。 因此,我试图找出jQuery 调用超时的默认值。有人有主意吗?在jQuery文档中找不到。 在此先感谢Marcus 问题答案: 似乎没有标准化的默认值。我感觉默认值为,而超时事件完全取决于浏览器和网络设置。 对于IE,还有对XmlHttpRequests超时属性在这里。它默认为null,表示网络堆栈很可能是第一个

  • 问题内容: 我感兴趣的selenium超时的默认值,和。因为我想知道,我需要为这些超时设置值吗?或默认值适合selenium webdriver工作。但是我找不到正确的答案,有人说默认值是0,而另一个人说是30秒。 问题答案: 这三个超时由Selenium方程的服务器端管理。您的脚本(使用Java,Python,Ruby,C#或其他任何语言)是将命令发送到位于浏览器中的服务器的客户端。(可能会有中

  • 假设我有一些异步计算,比如: 如果异步供应商根据某个指定的超时超时,有没有一种很好的方法为foo提供默认值?理想情况下,这样的功能也会尝试取消运行缓慢的供应商。例如,是否存在与以下假设代码类似的标准库功能: 编辑:这里有一个受Java8启发的解决方案:在lambda表达式中强制检查异常处理。为什么是强制的,而不是可选的?,但不幸的是它阻塞了一个线程。如果我们依赖于createFoo()异步检查超时

  • 问题内容: Python 3.4。尝试在urllib.request.urlopen()中查找默认超时是多少。 它的签名是:urllib.request.urlopen(URL,data = None,[timeout,] *,cafile = None,capath = None,cadefault = False,context = None) 该文档称其为“全局默认超时”,并查看其代码:so