Code=11, InternalErrorCode=-103, Retryable=false

2025年11月19日 22:52 状态: processing

🚨 错误信息

失败 org.chromium.net.impl.NetworkExceptionImpl: Exception in CronetUrlRequest: net::ERR_CONNECTION_ABORTED, ErrorCode=11, InternalErrorCode=-103, Retryable=false

🤖 AI解决方案

错误翻译

原文:Exception in CronetUrlRequest: net::ERR_CONNECTION_ABORTED, ErrorCode=11, InternalErrorCode=-103, Retryable=false
译文:CronetUrlRequest中的异常:网络连接被中止,错误代码=11,内部错误代码=-103,不可重试

原因分析
这是一个网络连接中断错误,具体原因是HTTP请求在执行过程中被意外中止。通常发生在:

  • 客户端主动取消网络请求

  • 网络连接突然断开

  • 服务器端主动关闭连接

  • 超时设置过短导致连接被强制终止
  • 解决方案

    1. 添加连接超时和重试机制

    // 配置Cronet引擎,增加超时设置
    CronetEngine.Builder engineBuilder = new CronetEngine.Builder(context);
    engineBuilder.enableHttp2(true)
        .enableQuic(true)
        .setStoragePath(storagePath)
        .enableHttpCache(CronetEngine.Builder.HTTP_CACHE_IN_MEMORY, 100 * 1024);
    
    // 设置连接超时(单位:秒)
    UrlRequest.Callback callback = new UrlRequest.Callback() {
        @Override
        public void onFailed(UrlRequest request, UrlResponseInfo info, CronetException error) {
            if (error instanceof NetworkException) {
                NetworkException ne = (NetworkException) error;
                if (ne.getCronetInternalErrorCode() == -103) {
                    // 连接中止错误,进行重试逻辑
                    if (retryCount < MAX_RETRY_COUNT) {
                        retryRequest();
                    }
                }
            }
        }
    };

    2. 检查网络状态和请求取消逻辑

    // 在执行网络请求前检查网络状态
    ConnectivityManager cm = (ConnectivityManager) context.getSystemService(Context.CONNECTIVITY_SERVICE);
    NetworkInfo activeNetwork = cm.getActiveNetworkInfo();
    if (activeNetwork == null || !activeNetwork.isConnected()) {
        // 网络不可用,不要发起请求
        return;
    }
    
    // 确保不要在不恰当的时候取消请求
    // 避免在Activity销毁时立即取消所有网络请求

    预防措施

  • 网络状态监控:在发起网络请求前始终检查网络连接状态,使用ConnectivityManager验证网络可用性
  • 合理的超时设置:根据业务需求设置适当的连接超时(建议15-30秒)和读取超时时间,避免因超时过短导致连接被过早中止
  • 使用网络库的自动重试机制:大多数现代网络库都内置了重试功能,合理配置重试次数和退避策略
  • 连接生命周期管理:确保网络请求的生命周期与UI组件的生命周期正确同步,避免因组件销毁导致的连接意外中断