HarmonyOS 鸿蒙Next WebView如何获取重定向URL携带的参数

发布于 1周前 作者 itying888 来自 鸿蒙OS

HarmonyOS 鸿蒙Next WebView如何获取重定向URL携带的参数 目前WebView用onLoadIntercept和onInterceptRequest、onOverrideUrlLoading,都无法获取到Url携带的参数

问题一:

比如https://www.baidu.com/index.html?a=1&b=2&c=3

onLoadIntercept和onInterceptRequest、onOverrideUrlLoading的参数只能获取到URL,并没有后面的参数,有什么办法获取到“a=1&b=2&c=3”这些数据呢?

问题二:

如何拦截post请求,目前WebView有什么API支持拦截post请求并获取请求携带的数据吗?


更多关于HarmonyOS 鸿蒙Next WebView如何获取重定向URL携带的参数的实战系列教程也可以访问 https://www.itying.com/category-93-b0.html

6 回复
onLoadIntercept 没参数?

不可能啊,我们都是这么做的,是不是本身就没带参数啊

更多关于HarmonyOS 鸿蒙Next WebView如何获取重定向URL携带的参数的实战系列教程也可以访问 https://www.itying.com/category-93-b0.html


onLoadIntercept里有WebResourceRequest这个参数啊,但是这个参数没有取url请求参数的方法,打印出来的只有url本身,没有问号后面携带的那一串参数,

不应该直接拿到连接了么 0 0 ,

event.data.getRequestUrl()

感谢,是我在web组件写死了没有参数的url,所以拦截的时候获取不到,把web组件里的src设置为空就可以了,

1、可以通过onLoadIntercept、onInterceptRequest获取对应的url。

参考代码如下:

/*
onInterceptRequest、onLoadIntercept接口测试。
*/
import { webview } from '@kit.ArkWeb';

@Entry
@Component
struct OnInterceptRequestTest {
  controller: webview.WebviewController = new webview.WebviewController();

  build() {
    Column() {
      Web({
        src: 'https://www.baidu.com/index.html?a=1&b=2&c=3', 
        controller: this.controller
      )
        .onLoadIntercept((event) => {
          console.log('url:' + event.data.getRequestUrl());
          console.log('isMainFrame:' + event.data.isMainFrame());
          console.log('isRedirect:' + event.data.isRedirect());
          console.log('isRequestGesture:' + event.data.isRequestGesture());
          return true;
        })
    }
    .width('100%')
    .height('100%')
  }
}

2、目前post请求无法处理

在HarmonyOS鸿蒙系统中,如果你正在使用Next WebView组件并希望获取重定向URL携带的参数,你可以通过以下方式实现:

  1. 监听WebView的导航事件: WebView提供了导航事件监听接口,你可以通过实现这些接口来捕获URL的变化。特别是当WebView发生页面跳转(如重定向)时,这些接口会被触发。

  2. 解析URL参数: 在捕获到重定向的URL后,你需要解析这个URL以提取携带的参数。这通常涉及到解析查询字符串(query string),即URL中"?"后面的部分。

  3. 提取所需参数: 解析查询字符串后,你可以根据参数的名称来提取所需的值。

需要注意的是,由于WebView的行为和API可能随着鸿蒙系统的更新而有所变化,因此上述方法可能需要根据你当前使用的鸿蒙系统版本和WebView组件的具体实现进行调整。

如果你已经按照上述步骤操作,但仍然无法获取重定向URL携带的参数,可能是由于WebView的某些配置或安全策略限制了URL的访问或参数的读取。此时,你可能需要检查WebView的配置,或考虑使用其他方法(如服务器端重定向处理)来获取所需参数。

如果问题依旧没法解决请联系官网客服,官网地址是 https://www.itying.com/category-93-b0.html

回到顶部