HarmonyOS 鸿蒙Next 用Web加载网页onErrorReceive报错
我们用Web组件加载网址:https://xxxxxx 的时候,onErrorReceive一直回调错误,ERR_FAILED, -2。chromium日志有类似的输出[network_service_network_delegate.cc:198] final url: *** , error_code -2(net::ERR_FAILED, downstream throughput kbps: 1600, duration_time(ms) 119 但是网页可以加载出来,我们要确定两个问题:
- onErrorReceive回调的错误,我们是否要响应,是否需要显示错误页面,阻断用户操作。
- onErrorReceive的错误,如果需要处理,都哪些错误要响应,哪些错误不需要响应
代码:
Web({ controller: this.webViewController, src: this.writeUrl })
.darkMode(WebDarkMode.Auto)
.domStorageAccess(true)
.zoomAccess(true)
.fileAccess(true)
.mixedMode(MixedMode.All)
.verticalScrollBarAccess(false)
.cacheMode(CacheMode.None)
.javaScriptAccess(true)
.javaScriptProxy(this.jsBridgeMethod.javaScriptProxy)
.height(this.getScreenHeight() - this.getNavBarHeight())
.width("100%")
.position({ y: this.getNavBarHeight() })
.backgroundColor($r("app.color.rb_color_bg_whiteboard"))
.expandSafeArea([SafeAreaType.KEYBOARD])
.mediaPlayGestureAccess(false)
.onTitleReceive((event) => {
if (event) {
if (this.outSideTitle.length === 0) {
this.webTitle = event.title;
}
}
})
.javaScriptOnDocumentStart([BonreeTrace.Web.getScriptItem()])
.onControllerAttached(() => {
this.resetUserAgent();
BonreeTrace.Web.onControllerAttachedHilt(this.webViewController);
})
.onErrorReceive((event) => {
if (!event) {
return;
}
console.error(`SSXXSS onErrorReceive is ${json.stringify(event.error)}, ${event.error.getErrorInfo()}, ${event.error.getErrorCode()}`)
this.loadingViewState = RBAppWebLoadingState.fail
BonreeTrace.Web.onErrorReceive(event.request, event.error, this.webViewController.getWebId());
})
.onHttpErrorReceive((event) => {
if (!event) {
return;
}
BonreeTrace.Web.onHttpErrorReceive(event.request, event.response, this.webViewController.getWebId());
})
.onSslErrorEventReceive((event) => {
this.loadingViewState = RBAppWebLoadingState.fail
BonreeTrace.Web.onSslErrorEventReceive(event.error, this.webViewController.getWebId());
})
.onLoadIntercept((event) => {
if (event) {
let url = event.data.getRequestUrl();
console.info('URL:' + url);
// 拦截页面请求
if (url.startsWith('tel:')) {
let parts = url.split(':');
let phoneNumber: string = parts.length > 1 ? parts[1] : '';
if (phoneNumber.length > 0) {
this.callPhone(phoneNumber);
}
return true;
}
}
return this.onLoadIntercept?.(event) ?? false;
})
更多关于HarmonyOS 鸿蒙Next 用Web加载网页onErrorReceive报错的实战教程也可以访问 https://www.itying.com/category-93-b0.html
2.onErrorReceive 返回的错误码可以参考:https://developer.huawei.com/consumer/cn/doc/harmonyos-references-V5/js-apis-neterrorlist-V5
是否需要响应及如何处理可以根据实际业务需求决定
更多关于HarmonyOS 鸿蒙Next 用Web加载网页onErrorReceive报错的实战系列教程也可以访问 https://www.itying.com/category-93-b0.html
在HarmonyOS鸿蒙Next环境中,使用Web组件加载网页时遇到onErrorReceive
报错,通常表示网页加载过程中出现了错误。这种错误可能由多种原因引起,包括但不限于网络问题、网页内容错误、权限设置不当或Web组件配置有误。
-
检查网络连接:确保设备已连接到有效的网络,并且网络状态稳定。
-
验证URL地址:确认加载的网页URL正确无误,且该网页可以在其他浏览器中正常访问。
-
检查权限配置:确保应用已申请并获得了访问网络的权限。在HarmonyOS中,需要在
config.json
文件中正确配置相关权限。 -
Web组件配置:检查Web组件的初始化及配置代码,确保没有遗漏或错误的配置。
-
错误日志分析:查看详细的错误日志,了解具体的错误原因。这有助于定位问题,是内容解析错误、加载超时还是其他类型的错误。
-
更新鸿蒙系统:确保鸿蒙系统为最新版本,因为系统更新可能修复了旧版本中的bug。
如果问题依旧没法解决请联系官网客服,官网地址是:https://www.itying.com/category-93-b0.html。