Code=11, InternalErrorCode=-103, Retryable=false
🚨 错误信息
失败
org.chromium.net.impl.NetworkExceptionImpl: Exception in CronetUrlRequest: net::ERR_CONNECTION_ABORTED, ErrorCode=11, InternalErrorCode=-103, Retryable=false
🤖 AI解决方案
错误翻译
客户端主动取消网络请求
网络连接突然断开
服务器端主动关闭连接
超时设置过短导致连接被强制终止 网络状态监控:在发起网络请求前始终检查网络连接状态,使用 合理的超时设置:根据业务需求设置适当的连接超时(建议15-30秒)和读取超时时间,避免因超时过短导致连接被过早中止 使用网络库的自动重试机制:大多数现代网络库都内置了重试功能,合理配置重试次数和退避策略 连接生命周期管理:确保网络请求的生命周期与UI组件的生命周期正确同步,避免因组件销毁导致的连接意外中断
原文:Exception in CronetUrlRequest: net::ERR_CONNECTION_ABORTED, ErrorCode=11, InternalErrorCode=-103, Retryable=false
译文:CronetUrlRequest中的异常:网络连接被中止,错误代码=11,内部错误代码=-103,不可重试
原因分析
这是一个网络连接中断错误,具体原因是HTTP请求在执行过程中被意外中止。通常发生在:
解决方案
1. 添加连接超时和重试机制
java
// 配置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. 检查网络状态和请求取消逻辑
java
// 在执行网络请求前检查网络状态
ConnectivityManager cm = (ConnectivityManager) context.getSystemService(Context.CONNECTIVITY_SERVICE);
NetworkInfo activeNetwork = cm.getActiveNetworkInfo();
if (activeNetwork == null || !activeNetwork.isConnected()) {
// 网络不可用,不要发起请求
return;
}// 确保不要在不恰当的时候取消请求
// 避免在Activity销毁时立即取消所有网络请求
预防措施
ConnectivityManager验证网络可用性