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解决方案
错误翻译
原文: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验证网络可用性