You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在Android Cronet中设置HTTP响应最大等待时间?

在Cronet中配置HTTP请求超时时间

Cronet提供两种设置请求超时的方式,可根据需求选择全局默认配置或单个请求自定义配置:

1. 全局默认超时(所有请求生效)

初始化CronetEngine时,通过Builder设置全局默认超时时间,所有请求将自动继承该配置:

fun initCronet() { // this is called only once
    executor = Executors.newSingleThreadExecutor()
    val globalTimeoutSeconds = 10L // 设置全局默认10秒超时
    engine = CronetEngine.Builder(context) 
        .enableHttp2(true)
        .setDefaultTimeout(globalTimeoutSeconds, TimeUnit.SECONDS)
        .build()
}

2. 单个请求自定义超时(覆盖全局配置)

若需给特定请求设置差异化超时,可在构建UrlRequest时单独配置:

suspend fun myFunction() {
    suspendCoroutine<HttpResponseContainer> {
        val callback = CoroutinesNetworkCallback(it)
        val url = "http://myhost.com/my-endpoint"

        engine.newUrlRequestBuilder(url, callback, executor)
            .addHeader("Content-Type", "application/json; charset=UTF-8")
            .setTimeout(15L, TimeUnit.SECONDS) // 该请求单独设置15秒超时
            .build().start()
    }
}

3. 超时后的异常处理

请求超时触发时,Cronet会调用UrlRequest.Callback的onFailed方法,可在该方法中区分超时异常并给出明确提示:

override fun onFailed(request: UrlRequest, info: UrlResponseInfo, error: CronetException) {
    val exception = when (error.cause) {
        is SocketTimeoutException -> RuntimeException("请求超时")
        else -> RuntimeException("请求失败")
    }
    continuation.resumeWithException(exception)
}

额外:协程层面的双重保障

如果需要更上层的超时控制,可结合协程的withTimeout函数,实现网络引擎+协程的双重超时保障:

suspend fun myFunction() {
    try {
        withTimeout(10000L) { // 协程层面10秒超时
            suspendCoroutine<HttpResponseContainer> {
                val callback = CoroutinesNetworkCallback(it)
                val url = "http://myhost.com/my-endpoint"

                engine.newUrlRequestBuilder(url, callback, executor)
                    .addHeader("Content-Type", "application/json; charset=UTF-8")
                    .build().start()
            }
        }
    } catch (e: TimeoutCancellationException) {
        throw RuntimeException("请求超时")
    }
}

内容的提问来源于stack exchange,提问作者Bravo

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.18 18:40:49