HarmonyOS鸿蒙Next中Web组件加载url的时候,怎么获取响应头

目前只在onHttpErrorReceive里面可以获取到响应信息。鸿蒙next的web组件能获取到响应头信息吗?如果能获取的话应该怎么做?

Web({
  src: this.userInfo,
  controller: this.controller,
  // controller: this.controller.getWebViewController(),
  renderMode: RenderMode.ASYNC_RENDER
})
  .javaScriptAccess(true) //.javaScriptProxy(this.controller.getJavaScriptProxy())
  .height('100%')
  .width('100%')
  .domStorageAccess(true)
  .cacheMode(CacheMode.Online)
  .onSslErrorEventReceive((e) => {
    // 忽略ssl证书错误
    e.handler.handleConfirm();
  })
  .onInterceptRequest((event) => {
    let url = event.request.getRequestUrl()
    console.error('webview:', 'onInterceptRequest---' + url);

    // let head = event.request.getRequestHeader()
    // console.error('webview:', 'head---' + JSON.stringify(head));
    // if (url.startsWith('clientrequest:')) {
    //   let responseResource: WebResourceResponse = new WebResourceResponse();
    //   return responseResource;
    // }
    return null
  })
  .onHttpErrorReceive((event)=>{
   let a= event.response.getResponseData()
    console.error('webview:', 'onHttpErrorReceive---' + a);
  })
  .onPageEnd(() => {

  })
  
  .onErrorReceive((event) => {
    console.error('webview:', 'onErrorReceive--' + event.error.getErrorInfo());
  })

更多关于HarmonyOS鸿蒙Next中Web组件加载url的时候,怎么获取响应头的实战教程也可以访问 https://www.itying.com/category-93-b0.html

2 回复

您好问一下什么场景下除了需要获取响应信息还需要获取响应头,获取响应头的目的主要是什么?

更多关于HarmonyOS鸿蒙Next中Web组件加载url的时候,怎么获取响应头的实战系列教程也可以访问 https://www.itying.com/category-93-b0.html


在HarmonyOS鸿蒙Next中,使用Web组件加载URL时,可以通过WebViewClientonPageFinished方法来获取响应头。具体步骤如下:

  1. 创建WebViewClient的子类,并重写onPageFinished方法。
  2. onPageFinished方法中,使用WebViewgetUrl()方法获取当前页面的URL。
  3. 通过WebViewevaluateJavascript方法执行JavaScript代码,获取响应头信息。

示例代码:

webView.setWebViewClient(new WebViewClient() {
    @Override
    public void onPageFinished(WebView view, String url) {
        super.onPageFinished(view, url);
        view.evaluateJavascript("(function() { return JSON.stringify(window.performance.getEntries()[0].responseHeaders); })();", new ValueCallback<String>() {
            @Override
            public void onReceiveValue(String value) {
                // 处理响应头信息
                Log.d("ResponseHeaders", value);
            }
        });
    }
});

通过这种方式,你可以在页面加载完成后获取到响应头信息。

回到顶部