2012-04-03 65 views
1

我正在连接到Web服务,并没有设置任何连接超时和HttpURLConnection读取超时。什么是默认连接超时和读取超时?它依赖于Android手机吗?或者Android/Java有超时的默认值?即使连接超时和读取超时设置为默认(无限),接收请求超时?

当我尝试获取连接超时值(getConnectTimeout())和读取超时值(getReadTimeout())时,它返回的值为0,我认为它等于无穷大。但是,即使它们的值为0,但有时候我仍然收到请求超时错误。所以他们的价值不能等于无限。有人能为此启发我吗?

回答

3

你做了什么研究吗?默认值详见documentation。以下是有关部分:

公共无效setConnectTimeout(INT超时)自:API等级1

设置建立连接 到此URLConnection实例指向的资源以毫秒为单位的超时值。 A 如果此时建立的连接不能为 ,则会抛出SocketTimeoutException。 默认值为0,代表无限的 超时。

公共无效setReadTimeout(INT超时)自:API级别1

设置从已建立的连接的资源的输入 流中读取以毫秒为单位的超时值。 A 如果此时建立的连接不能为 ,则会抛出SocketTimeoutException。 默认值为0,代表无限的 超时。

也有是有这样一个字条超时:

的URLConnection支持两个超时:一个连接超时和 读取超时。默认情况下,操作不会超时。

您连接的服务器可能会超时您的客户端。

+0

是的。这就是我迷惑的原因。我知道默认情况下,超时设置为无限。然而,我的请求仍然超时。我期待不管什么都不应该超时。 – Arci 2012-04-03 03:41:07

+0

谢谢!经过进一步的研究,我发现它确实是服务器谁是客户端超时。 O_O – Arci 2012-05-08 08:00:33

+0

@Devin M:我在连接时间和读取超时时遇到问题。在超时过期之前它们似乎过期。请看这个问题。你能帮我解决这个问题吗? http://stackoverflow.com/questions/12650127/sockettimeoutexception-before-the-connect-and-read-timeout-expires – Ashwin 2012-09-29 06:22:14

0

如果getConnectTimeoutgetReadTimeout从对象返回零,那么确实的确是的平均无穷大。这是继承自基础URLConnection类。

这可能是因为您收到的例外是一个SocketTimeoutException所有,应验证这一点 - 它可能得到IOException无论抛出的超时设置。

0

Javadoc connect()错误。零给你平台连接超时,这不是无限的,而是一分钟左右。您只能使用timeout参数降低此值,否则connect(),不会增加此值。