在Android下,HttpURLConnection的默认超时时间是多少?

4

在Android下,HttpURLConnection的默认读取超时时间和连接超时时间是多少?

看起来默认超时时间是0,但现在我很好奇,将连接超时时间设置为无限是否会有什么缺点?如果出现问题,我们会不会得到一个永远等待的连接?


1
我认为默认的超时时间取决于平台。但是你在问关于安卓系统? - Mick Mnemonic
可能是HttpURLConnection timeout defaults的重复问题。 - Saltz
@MickMnemonic:是的,抱歉我是指针对安卓系统。 - zeus
1个回答

7

A - 文档

由于Java的HttpURLConnection文档,超时默认设置为0(即无限制),并且可以修改。

具体来说,在文档的访问器/获取器方法中写明了;

public int getConnectTimeout() 返回连接超时的设置。返回0表示选项已禁用(即超时为无限期)。

返回:一个int,指示以毫秒为单位的连接超时值自: 1.5 参见:setConnectTimeout(int),connect()

如果我是你,我会在开始连接之前设置连接超时,并根据自己的初始值设置我的逻辑/流程。下面,您可以看到如何获取默认值并设置/修改连接超时参数的示例。

B - 示例代码

package com.levo.so.huc;

import java.io.IOException;
import java.net.HttpURLConnection;
import java.net.URL;

public class HttpConnectionTimeoutDemo {

    public static void main(String[] args) throws IOException {
        String url = "http://www.google.com/";

        URL obj = new URL(url);
        HttpURLConnection con = (HttpURLConnection) obj.openConnection();
        
        System.out.println("Default Connection Timeout : " + con.getConnectTimeout());
        
        con.setConnectTimeout(1000);
        System.out.println("New Connection Timeout     : " + con.getConnectTimeout());

    }

}

C - 输出

Default Connection Timeout : 0
New Connection Timeout     : 1000

1
谢谢!我稍微更新了一下问题,因为我很好奇将默认超时设置为无限是否会导致一些问题。 - zeus

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接