HarmonyOS webview使用问题:如何拦截url并添加参数,如何添加请求header

HarmonyOS
2024-12-17 13:53:14
浏览
收藏 0
回答 1
待解决
回答 1
按赞同
/
按时间
Excelsior_abit

Web的src里面填空 Web({ src: ’ ', controller: this.controller }) .onControllerAttached(() => { this.controller.loadUrl(‘https://*****’); }),这样页面就不会加载两次了

在每个url上都拼接额外的参数,可以在该方法中设置参数,并重新调用loadUrl加载:可直接在loadUrl后直接添加参数就可以了,this.controller.loadUrl(‘www.huawei.com/question?questionId=634111181582528512’, [{ headerKey: “headerKey”, headerValue: “headerValue” }])

可以通过布尔值添加判断避免死循环,因为onLoadIntercept是在Web组件加载url之前触发的回调,在里面再添加loadUrl容易无限触发,可以参考如下demo:

import web_webview from '@ohos.web.webview';
@Entry
@Component
struct WebHeaderComponent {
  controller: web_webview.WebviewController = new web_webview.WebviewController();
  @State requestHeader: string = '';
  @State isLoad: boolean = false;
  build() {
    Column() {
      Text(this.requestHeader)
      Button('loadUrl').onClick(() => {
        this.controller.loadUrl('https://www.huawei.com/id=1', [{ headerKey: 'Connection2222', headerValue: 'keep-alive' }])
      })
      Web({ src: 'https://www.huawei.com', controller: this.controller }).onLoadIntercept((event) => {
        if (!this.isLoad) {
          this.isLoad = true;
          this.controller.loadUrl('https://www.huawei.com/id=1', [{ headerKey: 'Connection222', headerValue: 'keep-alive' }])
        }
        this.requestHeader = 'requestHeader' + JSON.stringify(event?.data.getRequestHeader());
        return true;
      })
    }
  }
}
分享
微博
QQ
微信
回复
2024-12-17 16:03:37
相关问题
HarmonyOS webview怎么添加header
246浏览 • 1回复 待解决
HarmonyOS Web拦截网页动态添加请求
219浏览 • 1回复 待解决
Waterflow怎么添加header能力?
752浏览 • 1回复 待解决
如何HarmonyOS添加编译参数
1035浏览 • 1回复 待解决
webview如何实现网络请求拦截功能
2431浏览 • 1回复 待解决
webview如何拦截网络请求
1009浏览 • 1回复 待解决
HarmonyOS WebView拦截网络请求
848浏览 • 1回复 待解决
text内容如何实时获取添加修改?
3648浏览 • 1回复 待解决
HamonyOS 设置webview请求header
868浏览 • 1回复 待解决
HarmonyOS 如何在网络请求添加Loading?
252浏览 • 1回复 待解决