HarmonyOS鸿蒙Next中Webview加载网页如何附带参数及设置Cookies
HarmonyOS鸿蒙Next中Webview加载网页如何附带参数及设置Cookies
-
Webview加载网页如何附带参数? android使用 X5WebView 加载url时可以这样mWebView.loadUrl(url,map)附带参数,在鸿蒙webview组件中如何实现?
- Webview加载网页如何设置cookie? 在android我们是如下实现:
val token = "xxxxxx" val cookieManager = CookieManager.getInstance() cookieManager.removeSessionCookies(null) cookieManager.flush() cookieManager.setCookie(url, String.format("JSESSIONID=%s", token)) cookieManager.setCookie(url, "Domain=.zyb.com") cookieManager.setCookie(url, "Path=/") CookieManager.getInstance().flush()
在鸿蒙我们是这样写,但是不起使用:
let token = "xxxxxx" webview.WebCookieManager.configCookieSync(url, `JSESSIONID=${token}`); webview.WebCookieManager.configCookieSync(url, 'Domain=.zyb.com'); webview.WebCookieManager.configCookieSync(url, 'Path=/');
- Webview拦截url在新页面打开url,在哪个函数监管实现?
更多关于HarmonyOS鸿蒙Next中Webview加载网页如何附带参数及设置Cookies的实战教程也可以访问 https://www.itying.com/category-93-b0.html
关于第一个问题现在webview暂时不支持携带参数,ni可以通过resource的方式加载一个html就可以直接在html后追加上参数
关于第三个问题你可以参考onLoadIntercept函数,这个函数是当Web组件加载url之前触发该回调,用于判断是否阻止此次访问。默认允许加载。
参考链接:Web-ArkTS 组件-ArkWeb(方舟Web)-应用框架 - 华为HarmonyOS开发者
关于第二个问题我写了一个demo
通过WebCookieManager.configCookieSync可以对cookie进行设置,设置了之后并且能正常取到,测试demo如下:
import web_webview from '@ohos.web.webview';
import business_error from '@ohos.base';
@Entry
@Component
struct WebComponent {
controller: web_webview.WebviewController = new web_webview.WebviewController();
build() {
Column() {
Button('configCookieSync')
.onClick(() => {
try {
web_webview.WebCookieManager.configCookieSync('https://www.example.com', 'value=test');
} catch (error) {
let e: business_error.BusinessError = error as business_error.BusinessError;
console.error(`ErrorCode: ${e.code}, Message: ${e.message}`);
}
})
Button('fetchCookieSync')
.onClick(() => {
try {
let value = web_webview.WebCookieManager.fetchCookieSync('https://xxxx');
console.log("fetchCookieSync cookie = " + value);
} catch (error) {
let e:business_error.BusinessError = error as business_error.BusinessError;
console.error(`ErrorCode: ${e.code}, Message: ${e.message}`);
}
})
Web({ src: 'www.example.com', controller: this.controller })
}
}
}
并没有复现出问题,你可以参考该demo。
关于第一个问题的形式是这样的 Web({ src: “resource://rawfile/index.html?num=1”, controller: this.controller }),参数就是num=1
更多关于HarmonyOS鸿蒙Next中Webview加载网页如何附带参数及设置Cookies的实战系列教程也可以访问 https://www.itying.com/category-93-b0.html
在HarmonyOS鸿蒙Next中,Webview加载网页时附带参数及设置Cookies可以通过以下方式实现:
-
附带参数:可以通过在URL后添加查询字符串的方式传递参数。例如:
let url = "https://example.com?param1=value1¶m2=value2"; webview.loadUrl(url);
-
设置Cookies:使用
WebCookieManager
类来设置Cookies。例如:import web from '[@ohos](/user/ohos).web.webview'; let cookieManager = web.WebCookieManager.getInstance(); let cookie = "name=value; domain=example.com; path=/"; cookieManager.setCookie("https://example.com", cookie);
-
加载带有Cookies的网页:在设置好Cookies后,直接加载目标URL即可:
webview.loadUrl("https://example.com");
在HarmonyOS鸿蒙Next中,通过Webview加载网页时附带参数和设置Cookies,可以使用以下方法:
-
附带参数:可以直接在URL后附加查询参数,例如:
https://example.com?param1=value1¶m2=value2
。 -
设置Cookies:通过
WebStorageManager
的setCookie
方法设置Cookies。示例代码如下:WebStorageManager.getInstance().setCookie("https://example.com", "cookieName=cookieValue");
-
加载网页:使用
WebView
的load
方法加载带参数的URL。
这样即可在加载网页时附带参数并设置Cookies。