From ca9c150a924de01376dbdd6ee41295a0720fdb55 Mon Sep 17 00:00:00 2001 From: zhengyutao Date: Fri, 27 Jun 2025 07:28:07 +0000 Subject: [PATCH 1/8] =?UTF-8?q?WebResourceHandler=E7=9A=84didfail=E6=8E=A5?= =?UTF-8?q?=E5=8F=A3=E8=B5=84=E6=96=99=E5=8F=98=E6=9B=B4?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Signed-off-by: zhengyutao --- .../arkts-apis-webview-WebResourceHandler.md | 99 ++++++++++++++++++- 1 file changed, 98 insertions(+), 1 deletion(-) diff --git a/zh-cn/application-dev/reference/apis-arkweb/arkts-apis-webview-WebResourceHandler.md b/zh-cn/application-dev/reference/apis-arkweb/arkts-apis-webview-WebResourceHandler.md index 4a7c7bdd16d..8f9500c54da 100644 --- a/zh-cn/application-dev/reference/apis-arkweb/arkts-apis-webview-WebResourceHandler.md +++ b/zh-cn/application-dev/reference/apis-arkweb/arkts-apis-webview-WebResourceHandler.md @@ -109,4 +109,101 @@ didFail(code: WebNetErrorList): void **示例:** -示例请参考[OnRequestStart](./arkts-apis-webview-WebSchemeHandler.md#onrequeststart12)。 \ No newline at end of file +示例请参考[OnRequestStart](./arkts-apis-webview-WebSchemeHandler.md#onrequeststart12)。 + +## didFail20+ + +didFail(code: WebNetErrorList, completeIfNoResponse: boolean): void + +通知ArkWeb内核,被拦截请求应返回失败。若completeIfNoResponse为false,调用前需优先调用[didReceiveResponse](#didreceiveresponse12),将构造的响应头传递给被拦截的请求。若completeIfNoResponse为true,且调用前未调用[didReceiveResponse](#didreceiveresponse12),则自动生成一个响应头,网络错误码为-104,详情参见[WebNetErrorList](arkts-apis-netErrorList.md#webneterrorlist)。 + +**系统能力:** SystemCapability.Web.Webview.Core + +**参数:** + +| 参数名 | 类型 | 必填 | 说明 | +| --------| ------- | ---- | ---------------------------| +| code | [WebNetErrorList](arkts-apis-netErrorList.md#webneterrorlist) | 是 | 网络错误码。 | + +| completeIfNoResponse | boolean | 是 | 调用当前接口时,若之前未调用过[didReceiveResponse](#didreceiveresponse12),是否完成此次网络请求;值为true时,若之前未调用过[didReceiveResponse](#didreceiveresponse12),则会自动生成一个response以完成此次网络请求,网络错误码为-104;值为false时,将等待应用调用[didReceiveResponse](#didreceiveresponse12)并传入response,不会直接完成此次网络请求。 | + +**错误码:** + +以下错误码的详细介绍请参见[Webview错误码](errorcode-webview.md)。 + +| 错误码ID | 错误信息 | +| -------- | ------------------------------------- | +| 17100101 | The errorCode is either ARKWEB_NET_OK or outside the range of error codes in WebNetErrorList. | +| 17100021 | The resource handler is invalid. | + +**示例:** + +```ts +// xxx.ets +import { webview, WebNetErrorList } from '@kit.ArkWeb'; +import { BusinessError } from '@kit.BasicServicesKit'; + +@Entry +@Component +struct WebComponent { + controller: webview.WebviewController = new webview.WebviewController(); + schemeHandler: webview.WebSchemeHandler = new webview.WebSchemeHandler(); + + build() { + Column() { + Web({ src: 'https://www.example.com', controller: this.controller }) + .onControllerAttached(() => { + try { + this.schemeHandler.onRequestStart((request: webview.WebSchemeHandlerRequest, resourceHandler: webview.WebResourceHandler) => { + console.log("[schemeHandler] onRequestStart"); + try { + console.log("[schemeHandler] onRequestStart url:" + request.getRequestUrl()); + console.log("[schemeHandler] onRequestStart method:" + request.getRequestMethod()); + console.log("[schemeHandler] onRequestStart referrer:" + request.getReferrer()); + console.log("[schemeHandler] onRequestStart isMainFrame:" + request.isMainFrame()); + console.log("[schemeHandler] onRequestStart hasGesture:" + request.hasGesture()); + console.log("[schemeHandler] onRequestStart header size:" + request.getHeader().length); + console.log("[schemeHandler] onRequestStart resource type:" + request.getRequestResourceType()); + console.log("[schemeHandler] onRequestStart frame url:" + request.getFrameUrl()); + let header = request.getHeader(); + for (let i = 0; i < header.length; i++) { + console.log("[schemeHandler] onRequestStart header:" + header[i].headerKey + " " + header[i].headerValue); + } + let stream = request.getHttpBodyStream(); + if (stream) { + console.log("[schemeHandler] onRequestStart has http body stream"); + } else { + console.log("[schemeHandler] onRequestStart has no http body stream"); + } + } catch (error) { + console.error(`ErrorCode: ${(error as BusinessError).code}, Message: ${(error as BusinessError).message}`); + } + + if (request.getRequestUrl().endsWith("example.com")) { + return false; + } + + try { + // 直接调用didFail(WebNetErrorList.ERR_FAILED, true),自动构造一个网络请求错误ERR_CONNECTION_FAILED + resourceHandler.didFail(WebNetErrorList.ERR_FAILED, true); + } catch (error) { + console.error(`[schemeHandler] ErrorCode: ${(error as BusinessError).code}, Message: ${(error as BusinessError).message}`); + } + return true; + }) + + this.schemeHandler.onRequestStop((request: webview.WebSchemeHandlerRequest) => { + console.log("[schemeHandler] onRequestStop"); + }); + + this.controller.setWebSchemeHandler('https', this.schemeHandler); + } catch (error) { + console.error(`ErrorCode: ${(error as BusinessError).code}, Message: ${(error as BusinessError).message}`); + } + }) + .javaScriptAccess(true) + .domStorageAccess(true) + } + } +} +``` \ No newline at end of file -- Gitee From 69c15e7baee98ce33a704bf3f4476ea716bf8dcf Mon Sep 17 00:00:00 2001 From: zhengyutao Date: Fri, 27 Jun 2025 07:29:32 +0000 Subject: [PATCH 2/8] =?UTF-8?q?WebResourceHandler=E7=9A=84didfail=E6=8E=A5?= =?UTF-8?q?=E5=8F=A3=E8=B5=84=E6=96=99=E5=8F=98=E6=9B=B4?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Signed-off-by: zhengyutao --- .../apis-arkweb/arkts-apis-webview-WebResourceHandler.md | 1 - 1 file changed, 1 deletion(-) diff --git a/zh-cn/application-dev/reference/apis-arkweb/arkts-apis-webview-WebResourceHandler.md b/zh-cn/application-dev/reference/apis-arkweb/arkts-apis-webview-WebResourceHandler.md index 8f9500c54da..16ee7ff84c3 100644 --- a/zh-cn/application-dev/reference/apis-arkweb/arkts-apis-webview-WebResourceHandler.md +++ b/zh-cn/application-dev/reference/apis-arkweb/arkts-apis-webview-WebResourceHandler.md @@ -124,7 +124,6 @@ didFail(code: WebNetErrorList, completeIfNoResponse: boolean): void | 参数名 | 类型 | 必填 | 说明 | | --------| ------- | ---- | ---------------------------| | code | [WebNetErrorList](arkts-apis-netErrorList.md#webneterrorlist) | 是 | 网络错误码。 | - | completeIfNoResponse | boolean | 是 | 调用当前接口时,若之前未调用过[didReceiveResponse](#didreceiveresponse12),是否完成此次网络请求;值为true时,若之前未调用过[didReceiveResponse](#didreceiveresponse12),则会自动生成一个response以完成此次网络请求,网络错误码为-104;值为false时,将等待应用调用[didReceiveResponse](#didreceiveresponse12)并传入response,不会直接完成此次网络请求。 | **错误码:** -- Gitee From 0e904761a0e02198ef3594d8ec4bbf86f9d7c9f5 Mon Sep 17 00:00:00 2001 From: zhengyutao Date: Fri, 27 Jun 2025 07:31:24 +0000 Subject: [PATCH 3/8] =?UTF-8?q?WebResourceHandler=E7=9A=84didfail=E6=8E=A5?= =?UTF-8?q?=E5=8F=A3=E8=B5=84=E6=96=99=E5=8F=98=E6=9B=B4?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Signed-off-by: zhengyutao --- .../apis-arkweb/arkts-apis-webview-WebResourceHandler.md | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/zh-cn/application-dev/reference/apis-arkweb/arkts-apis-webview-WebResourceHandler.md b/zh-cn/application-dev/reference/apis-arkweb/arkts-apis-webview-WebResourceHandler.md index 16ee7ff84c3..8cfccea8a32 100644 --- a/zh-cn/application-dev/reference/apis-arkweb/arkts-apis-webview-WebResourceHandler.md +++ b/zh-cn/application-dev/reference/apis-arkweb/arkts-apis-webview-WebResourceHandler.md @@ -123,8 +123,8 @@ didFail(code: WebNetErrorList, completeIfNoResponse: boolean): void | 参数名 | 类型 | 必填 | 说明 | | --------| ------- | ---- | ---------------------------| -| code | [WebNetErrorList](arkts-apis-netErrorList.md#webneterrorlist) | 是 | 网络错误码。 | -| completeIfNoResponse | boolean | 是 | 调用当前接口时,若之前未调用过[didReceiveResponse](#didreceiveresponse12),是否完成此次网络请求;值为true时,若之前未调用过[didReceiveResponse](#didreceiveresponse12),则会自动生成一个response以完成此次网络请求,网络错误码为-104;值为false时,将等待应用调用[didReceiveResponse](#didreceiveresponse12)并传入response,不会直接完成此次网络请求。 | +| code | [WebNetErrorList](arkts-apis-netErrorList.md#webneterrorlist) | 是 | 网络错误码。 | +| completeIfNoResponse | boolean | 是 | 调用当前接口时,若之前未调用过[didReceiveResponse](#didreceiveresponse12),是否完成此次网络请求;值为true时,若之前未调用过[didReceiveResponse](#didreceiveresponse12),则会自动生成一个response以完成此次网络请求,网络错误码为-104;值为false时,将等待应用调用[didReceiveResponse](#didreceiveresponse12)并传入response,不会直接完成此次网络请求。 | **错误码:** -- Gitee From 94a4f4333a13b9bbc01a176cc4c5ea8e3dcfc335 Mon Sep 17 00:00:00 2001 From: zhengyutao Date: Fri, 27 Jun 2025 07:32:01 +0000 Subject: [PATCH 4/8] =?UTF-8?q?WebResourceHandler=E7=9A=84didfail=E6=8E=A5?= =?UTF-8?q?=E5=8F=A3=E8=B5=84=E6=96=99=E5=8F=98=E6=9B=B4?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Signed-off-by: zhengyutao --- .../apis-arkweb/arkts-apis-webview-WebResourceHandler.md | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/zh-cn/application-dev/reference/apis-arkweb/arkts-apis-webview-WebResourceHandler.md b/zh-cn/application-dev/reference/apis-arkweb/arkts-apis-webview-WebResourceHandler.md index 8cfccea8a32..595fb37257e 100644 --- a/zh-cn/application-dev/reference/apis-arkweb/arkts-apis-webview-WebResourceHandler.md +++ b/zh-cn/application-dev/reference/apis-arkweb/arkts-apis-webview-WebResourceHandler.md @@ -122,9 +122,9 @@ didFail(code: WebNetErrorList, completeIfNoResponse: boolean): void **参数:** | 参数名 | 类型 | 必填 | 说明 | -| --------| ------- | ---- | ---------------------------| -| code | [WebNetErrorList](arkts-apis-netErrorList.md#webneterrorlist) | 是 | 网络错误码。 | -| completeIfNoResponse | boolean | 是 | 调用当前接口时,若之前未调用过[didReceiveResponse](#didreceiveresponse12),是否完成此次网络请求;值为true时,若之前未调用过[didReceiveResponse](#didreceiveresponse12),则会自动生成一个response以完成此次网络请求,网络错误码为-104;值为false时,将等待应用调用[didReceiveResponse](#didreceiveresponse12)并传入response,不会直接完成此次网络请求。 | +| --------| ------- | ---- | ---------------------------| +| code | [WebNetErrorList](arkts-apis-netErrorList.md#webneterrorlist) | 是 | 网络错误码。 | +| completeIfNoResponse | boolean | 是 | 调用当前接口时,若之前未调用过[didReceiveResponse](#didreceiveresponse12),是否完成此次网络请求;值为true时,若之前未调用过[didReceiveResponse](#didreceiveresponse12),则会自动生成一个response以完成此次网络请求,网络错误码为-104;值为false时,将等待应用调用[didReceiveResponse](#didreceiveresponse12)并传入response,不会直接完成此次网络请求。 | **错误码:** -- Gitee From 326bddd996fe9af2f5079c6927d797d66dfb6536 Mon Sep 17 00:00:00 2001 From: zhengyutao Date: Fri, 27 Jun 2025 07:32:55 +0000 Subject: [PATCH 5/8] =?UTF-8?q?WebResourceHandler=E7=9A=84didfail=E6=8E=A5?= =?UTF-8?q?=E5=8F=A3=E8=B5=84=E6=96=99=E5=8F=98=E6=9B=B4?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Signed-off-by: zhengyutao --- .../apis-arkweb/arkts-apis-webview-WebResourceHandler.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/zh-cn/application-dev/reference/apis-arkweb/arkts-apis-webview-WebResourceHandler.md b/zh-cn/application-dev/reference/apis-arkweb/arkts-apis-webview-WebResourceHandler.md index 595fb37257e..16ee7ff84c3 100644 --- a/zh-cn/application-dev/reference/apis-arkweb/arkts-apis-webview-WebResourceHandler.md +++ b/zh-cn/application-dev/reference/apis-arkweb/arkts-apis-webview-WebResourceHandler.md @@ -122,7 +122,7 @@ didFail(code: WebNetErrorList, completeIfNoResponse: boolean): void **参数:** | 参数名 | 类型 | 必填 | 说明 | -| --------| ------- | ---- | ---------------------------| +| --------| ------- | ---- | ---------------------------| | code | [WebNetErrorList](arkts-apis-netErrorList.md#webneterrorlist) | 是 | 网络错误码。 | | completeIfNoResponse | boolean | 是 | 调用当前接口时,若之前未调用过[didReceiveResponse](#didreceiveresponse12),是否完成此次网络请求;值为true时,若之前未调用过[didReceiveResponse](#didreceiveresponse12),则会自动生成一个response以完成此次网络请求,网络错误码为-104;值为false时,将等待应用调用[didReceiveResponse](#didreceiveresponse12)并传入response,不会直接完成此次网络请求。 | -- Gitee From 144b413cd453e97d1eafeb0e49228910644388fc Mon Sep 17 00:00:00 2001 From: zhengyutao Date: Fri, 27 Jun 2025 07:33:54 +0000 Subject: [PATCH 6/8] =?UTF-8?q?WebResourceHandler=E7=9A=84didfail=E6=8E=A5?= =?UTF-8?q?=E5=8F=A3=E8=B5=84=E6=96=99=E5=8F=98=E6=9B=B4?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Signed-off-by: zhengyutao --- .../apis-arkweb/arkts-apis-webview-WebResourceHandler.md | 1 - 1 file changed, 1 deletion(-) diff --git a/zh-cn/application-dev/reference/apis-arkweb/arkts-apis-webview-WebResourceHandler.md b/zh-cn/application-dev/reference/apis-arkweb/arkts-apis-webview-WebResourceHandler.md index 16ee7ff84c3..525c0dd885f 100644 --- a/zh-cn/application-dev/reference/apis-arkweb/arkts-apis-webview-WebResourceHandler.md +++ b/zh-cn/application-dev/reference/apis-arkweb/arkts-apis-webview-WebResourceHandler.md @@ -124,7 +124,6 @@ didFail(code: WebNetErrorList, completeIfNoResponse: boolean): void | 参数名 | 类型 | 必填 | 说明 | | --------| ------- | ---- | ---------------------------| | code | [WebNetErrorList](arkts-apis-netErrorList.md#webneterrorlist) | 是 | 网络错误码。 | -| completeIfNoResponse | boolean | 是 | 调用当前接口时,若之前未调用过[didReceiveResponse](#didreceiveresponse12),是否完成此次网络请求;值为true时,若之前未调用过[didReceiveResponse](#didreceiveresponse12),则会自动生成一个response以完成此次网络请求,网络错误码为-104;值为false时,将等待应用调用[didReceiveResponse](#didreceiveresponse12)并传入response,不会直接完成此次网络请求。 | **错误码:** -- Gitee From a42eddc4084516dd0f2efb9688970acda7944cd9 Mon Sep 17 00:00:00 2001 From: zhengyutao Date: Fri, 27 Jun 2025 07:35:04 +0000 Subject: [PATCH 7/8] =?UTF-8?q?WebResourceHandler=E7=9A=84didfail=E6=8E=A5?= =?UTF-8?q?=E5=8F=A3=E8=B5=84=E6=96=99=E5=8F=98=E6=9B=B4?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Signed-off-by: zhengyutao --- .../apis-arkweb/arkts-apis-webview-WebResourceHandler.md | 1 + 1 file changed, 1 insertion(+) diff --git a/zh-cn/application-dev/reference/apis-arkweb/arkts-apis-webview-WebResourceHandler.md b/zh-cn/application-dev/reference/apis-arkweb/arkts-apis-webview-WebResourceHandler.md index 525c0dd885f..16ee7ff84c3 100644 --- a/zh-cn/application-dev/reference/apis-arkweb/arkts-apis-webview-WebResourceHandler.md +++ b/zh-cn/application-dev/reference/apis-arkweb/arkts-apis-webview-WebResourceHandler.md @@ -124,6 +124,7 @@ didFail(code: WebNetErrorList, completeIfNoResponse: boolean): void | 参数名 | 类型 | 必填 | 说明 | | --------| ------- | ---- | ---------------------------| | code | [WebNetErrorList](arkts-apis-netErrorList.md#webneterrorlist) | 是 | 网络错误码。 | +| completeIfNoResponse | boolean | 是 | 调用当前接口时,若之前未调用过[didReceiveResponse](#didreceiveresponse12),是否完成此次网络请求;值为true时,若之前未调用过[didReceiveResponse](#didreceiveresponse12),则会自动生成一个response以完成此次网络请求,网络错误码为-104;值为false时,将等待应用调用[didReceiveResponse](#didreceiveresponse12)并传入response,不会直接完成此次网络请求。 | **错误码:** -- Gitee From 2d2515238d5744d196781f711c7e7e4582d13569 Mon Sep 17 00:00:00 2001 From: zhengyutao Date: Fri, 27 Jun 2025 07:37:55 +0000 Subject: [PATCH 8/8] =?UTF-8?q?WebResourceHandler=E7=9A=84didfail=E6=8E=A5?= =?UTF-8?q?=E5=8F=A3=E8=B5=84=E6=96=99=E5=8F=98=E6=9B=B4?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Signed-off-by: zhengyutao --- .../reference/apis-arkweb/errorcode-webview.md | 18 ++++++++++++++++++ 1 file changed, 18 insertions(+) diff --git a/zh-cn/application-dev/reference/apis-arkweb/errorcode-webview.md b/zh-cn/application-dev/reference/apis-arkweb/errorcode-webview.md index 92daf3ff755..74a3e086b9d 100644 --- a/zh-cn/application-dev/reference/apis-arkweb/errorcode-webview.md +++ b/zh-cn/application-dev/reference/apis-arkweb/errorcode-webview.md @@ -361,3 +361,21 @@ The port number is not within the allowed range. **处理步骤** 检查使用的端口号是否在允许的取值范围内。 + +## 17100101 使用了错误的网络错误码 + +**错误信息** + +The errorCode is either ARKWEB_NET_OK or outside the range of error codes in WebNetErrorList. + +**错误描述** + +网络错误码为ARKWEB_NET_OK或者超出了WebNetErrorList中的错误码范围。 + +**可能原因** + +使用的错误码不在[WebNetErrorList](arkts-apis-netErrorList.md#webneterrorlist)范围内,或者调用didFail接口时使用了NET_OK错误码。 + +**处理步骤** + +检查使用的错误码是否在[WebNetErrorList](arkts-apis-netErrorList.md#webneterrorlist)范围内,或者调用difFail时是否使用了NET_OK错误码。 -- Gitee