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 
        } 
 
      }) 
  } 
}
  • 1.
  • 2.
  • 3.
  • 4.
  • 5.
  • 6.
  • 7.
  • 8.
  • 9.
  • 10.
  • 11.
  • 12.
  • 13.
  • 14.
  • 15.
  • 16.
  • 17.
  • 18.
  • 19.
  • 20.
  • 21.
  • 22.
  • 23.
  • 24.
  • 25.
  • 26.
  • 27.
  • 28.
  • 29.
  • 30.
  • 31.
  • 32.
  • 33.
  • 34.
  • 35.
  • 36.
  • 37.
分享
微博
QQ
微信
回复
2024-09-04 17:45:36
相关问题
webviewoninterceptrequest中调用异步操作
2631浏览 • 1回复 待解决
HarmonyOS Web组件实现异步请求拦截
649浏览 • 1回复 待解决
taskpool异步任务支持串行处理方法
1863浏览 • 1回复 待解决
HarmonyOS Image组件能调用异步方法吗?
882浏览 • 1回复 待解决
HarmonyOS Web组件拦截返回按钮
789浏览 • 1回复 待解决
ArkUI组件能否支持继承
2391浏览 • 1回复 待解决
Tabs组件tabBar,能否设置对齐方法
1171浏览 • 1回复 待解决
HarmonyOS web组件拦截返回手势
638浏览 • 1回复 待解决
HarmonyOS Web组件UserAgent判断方法
745浏览 • 1回复 待解决