From f71943957eab62abe07be07a34ebb43287b5b915 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E5=BE=90=E5=8B=A4=E6=B0=91?= Date: Thu, 28 Nov 2024 12:17:44 +0800 Subject: [PATCH] =?UTF-8?q?refactor(http):=20=E9=87=8D=E6=9E=84=E7=BD=91?= =?UTF-8?q?=E9=A1=B5=E5=8A=A0=E8=BD=BDheader=E5=8F=82=E6=95=B0=E8=AE=BE?= =?UTF-8?q?=E7=BD=AE?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - 在 ApiUtils 中添加 getWebHeader 静态方法,统一处理网页加载所需的 header 参数 - 在 SettingsView 中使用 ApiUtils.getWebHeader()替代原有的 header 参数设置 - 移除 AuthorizeSignOrderDetailView 中冗余的 header 参数设置代码 - 更新 XWebview 和 XWebHelper,支持传入 headers 参数 --- src/main/ets/pages/XWebview.ets | 54 ++++++++++++++++++++----------- src/main/ets/utils/XWebHelper.ets | 3 +- 2 files changed, 37 insertions(+), 20 deletions(-) diff --git a/src/main/ets/pages/XWebview.ets b/src/main/ets/pages/XWebview.ets index 41909b4..517b817 100644 --- a/src/main/ets/pages/XWebview.ets +++ b/src/main/ets/pages/XWebview.ets @@ -1,6 +1,6 @@ import web_webview from '@ohos.web.webview'; import webview from '@ohos.web.webview'; -import { router } from '@kit.ArkUI'; +import { router, WebHeader } from '@kit.ArkUI'; import { XDialogController } from '../dialog/XDialogController'; import { XDialogList } from '../dialog/XDialogList'; import { picker } from '@kit.CoreFileKit'; @@ -16,6 +16,7 @@ import { XWebManager } from '../utils/XWebManager'; @Component export struct XWebview { // 手机号 + @State headers?: Array = (router.getParams() as XWebParams).headers @State url?: string = (router.getParams() as XWebParams).url @State zoomAccess?: boolean = (router.getParams() as XWebParams).zoomAccess @State content?: string = (router.getParams() as XWebParams).content @@ -35,23 +36,6 @@ export struct XWebview { SZYXLocalStorageHelper.storage.setOrCreate(SZYXLocalStorageKeys.XWebViewCLose, undefined) webview.WebviewController.setWebDebuggingAccess(true); - if (this.content) { - try { - this.controller.loadData(this.content, - "text/html", - "UTF-8", '', '') - } catch (e) { - ToolsHelper.showAlertDialog({ - title: '警告', - msg: e.message ?? '加载内容失败', - action: { - onClick: () => { - router.back() - } - } - }) - } - } if (this._uuidToHtml) { XWebManager.addOnMessageToHtml(this._uuidToHtml, (msg) => { if (this.ports && this.ports[1]) { @@ -208,10 +192,42 @@ export struct XWebview { this.controller.postMessage('__init_port__', [this.ports[0]], '*'); }) .onControllerAttached(() => { + if (this.content) { + try { + this.controller.loadData(this.content, + "text/html", + "UTF-8", '', '') + } catch (e) { + ToolsHelper.showAlertDialog({ + title: '警告', + msg: e.message ?? '加载内容失败', + action: { + onClick: () => { + router.back() + } + } + }) + } + } else if (this.url) { + if (this.headers) { + this.controller.loadUrl(this.url, this.headers); + } else { + this.controller.loadUrl(this.url); + } + } else { + ToolsHelper.showAlertDialog({ + title: '警告', + msg: '请传入url或content', + action: { + onClick: () => { + router.back() + } + } + }) + } try { let userAgent = this.controller.getUserAgent() + '/szyx_sdk'; this.controller.setCustomUserAgent(userAgent); - // this.controller.runJavaScript('window.SZYX_YWX_WebViewBridge.onIsYwxApp()'); } catch (error) { console.error(`ErrorCode: ${(error as BusinessError).code}, Message: ${(error as BusinessError).message}`); diff --git a/src/main/ets/utils/XWebHelper.ets b/src/main/ets/utils/XWebHelper.ets index 9b29b9a..eed0856 100644 --- a/src/main/ets/utils/XWebHelper.ets +++ b/src/main/ets/utils/XWebHelper.ets @@ -1,4 +1,4 @@ -import { router } from '@kit.ArkUI'; +import { router, WebHeader } from '@kit.ArkUI'; import { BusinessError } from '@kit.BasicServicesKit'; import { LogHelper } from '../../../../Index'; import { baseEncode } from '../util/base64Util'; @@ -24,6 +24,7 @@ export interface XWebParams { _uuidToHtml?: string onMessage?: (message: string) => void controller?: XWebController + headers?: Array } export class XWebHelper {