HarmonyOS web组件的onInterceptRequest方法,能否支持异步方式返回WebResourceResponse

web组件提供的onInterceptRequest方法,用于拦截web请求,返回自定义的响应。但这个方法是同步方式,能否支持异步方式?

HarmonyOS
2024-09-04 10:59:46
浏览
收藏 0
回答 1
待解决
回答 1
按赞同
/
按时间
superinsect

先设置setResponseIsReady为false,那么内核此时不会去读取response的内容。当获取到fd后再将其改为true,此时内核才会去读去响应数据

参考demo:

build() { 
 
  Column() { 
    Web({ src: $rawfile('catch.html'), controller: this.webviewController }) 
      .onInterceptRequest((event) => { 
        if (event) { 
          console.log('url123456:' + event.request.getRequestUrl()) 
        } 
 
        const url = event!.request.getRequestUrl(); 
 
        // const regExp = new RegExp("^(http|https)[w/-]+(.jpg)$"); 
        console.log(url.endsWith(".jpg") + '123456') 
        if (!url.endsWith(".jpg")) return null; 
        try { 
          // const responseweb = new WebResourceResponse(); 
          let url2='https://index.html/1.jpg'; 
          this.xxxx(url2).then(fd => { 
            this.responseweb.setResponseData(fd); 
            this.responseweb.setResponseCode(200); 
            this.responseweb.setReasonMessage('OK'); 
            this.responseweb.setResponseIsReady(true); 
            console.log(fd+" 1234567") 
          }); 
          this.responseweb.setResponseMimeType('image/*'); 
          this.responseweb.setResponseIsReady(false); 
          console.log(this.responseweb.getResponseData().toString+"123456") 
          return this.responseweb; 
 
        } catch (error) { 
          console.error(`[Demo]Code: ${error.code},Message: ${error.message} `); 
          return null 
        } 
 
      }) 
  } 
}
分享
微博
QQ
微信
回复
2024-09-04 17:45:36
相关问题
webviewoninterceptrequest中调用异步操作
2024浏览 • 1回复 待解决
taskpool异步任务支持串行处理方法
994浏览 • 1回复 待解决
HarmonyOS Image组件能调用异步方法吗?
230浏览 • 1回复 待解决
ArkUI组件能否支持继承
1348浏览 • 1回复 待解决
HarmonyOS web组件是否支持webrtc?
254浏览 • 1回复 待解决
HarmonyOS 关系型数据库api异步返回
387浏览 • 1回复 待解决