harmony 鸿蒙arkweb_scheme_handler.h

  • 2025-06-12
  • 浏览 (4)

arkweb_scheme_handler.h

概述

声明用于拦截来自ArkWeb的请求的API。

库: libohweb.so

引用文件:

系统能力: SystemCapability.Web.Webview.Core

起始版本: 12

相关模块:Web

相关示例:ArkWebSchemeHandler

汇总

类型定义

名称 描述
typedef enum ArkWeb_CustomSchemeOption ArkWeb_CustomSchemeOption custom scheme的配置信息。
typedef enum ArkWeb_ResourceType ArkWeb_ResourceType 请求的资源类型。
typedef struct ArkWebSchemeHandler ArkWeb_SchemeHandler 该类用于拦截指定scheme的请求。
typedef struct ArkWebResourceHandler ArkWeb_ResourceHandler 用于被拦截的URL请求。
typedef struct ArkWebResponse ArkWeb_Response 为被拦截的请求构造一个ArkWeb_Response。
typedef struct ArkWebResourceRequest ArkWeb_ResourceRequest 对应内核的一个请求,可以通过OH_ArkWeb_ResourceRequest获取请求的URL、method、post data以及其他信息。
typedef struct ArkWebRequestHeaderList ArkWeb_RequestHeaderList 请求头列表。
typedef struct ArkWebHttpBodyStream ArkWeb_HttpBodyStream 请求的上传数据。
typedef void(* ArkWeb_OnRequestStart) (const ArkWeb_SchemeHandler *schemeHandler, ArkWeb_ResourceRequest *resourceRequest, const ArkWeb_ResourceHandler *resourceHandler, bool *intercept) 请求开始的回调,这将在IO线程上被调用。
typedef void(* ArkWeb_OnRequestStop) (const ArkWeb_SchemeHandler *schemeHandler, const ArkWeb_ResourceRequest *resourceRequest) 请求完成时的回调函数。
typedef void(* ArkWeb_HttpBodyStreamReadCallback) (const ArkWeb_HttpBodyStream *httpBodyStream, uint8_t *buffer, int bytesRead) 当OH_ArkWebHttpBodyStream_Read读取操作完成时的回调函数。
typedef void(* ArkWeb_HttpBodyStreamInitCallback) (const ArkWeb_HttpBodyStream *httpBodyStream, ArkWeb_NetError result) ArkWeb_HttpBodyStream初始化操作完成时回调函数。

枚举

名称 描述
ArkWeb_CustomSchemeOption {
OH_ARKWEB_SCHEME_OPTION_NONE = 0, ARKWEB_SCHEME_OPTION_STANDARD = 1 << 0, ARKWEB_SCHEME_OPTION_LOCAL = 1 << 1, ARKWEB_SCHEME_OPTION_DISPLAY_ISOLATED = 1 << 2,
ARKWEB_SCHEME_OPTION_SECURE = 1 << 3, ARKWEB_SCHEME_OPTION_CORS_ENABLED = 1 << 4, ARKWEB_SCHEME_OPTION_CSP_BYPASSING = 1 << 5, ARKWEB_SCHEME_OPTION_FETCH_ENABLED = 1 << 6,
ARKWEB_SCHEME_OPTION_CODE_CACHE_ENABLED = 1 << 7
}
custom scheme的配置信息。
ArkWeb_ResourceType {
MAIN_FRAME = 0, SUB_FRAME = 1, STYLE_SHEET = 2, SCRIPT = 3,
IMAGE = 4, FONT_RESOURCE = 5, SUB_RESOURCE = 6, OBJECT = 7,
MEDIA = 8, WORKER = 9, SHARED_WORKER = 10, PREFETCH = 11,
FAVICON = 12, XHR = 13, PING = 14, SERVICE_WORKER = 15,
CSP_REPORT = 16, PLUGIN_RESOURCE = 17, NAVIGATION_PRELOAD_MAIN_FRAME = 19, NAVIGATION_PRELOAD_SUB_FRAME = 20
}
请求的资源类型。

函数

名称 描述
void OH_ArkWebRequestHeaderList_Destroy (ArkWeb_RequestHeaderList *requestHeaderList) 销毁ArkWeb_RequestHeaderList对象。
int32_t OH_ArkWebRequestHeaderList_GetSize (const ArkWeb_RequestHeaderList *requestHeaderList) 获取请求头列表的大小。
void OH_ArkWebRequestHeaderList_GetHeader (const ArkWeb_RequestHeaderList *requestHeaderList, int32_t index, char **key, char **value) 获取指定的请求头。
int32_t OH_ArkWebResourceRequest_SetUserData (ArkWeb_ResourceRequest *resourceRequest, void *userData) 将一个用户数据设置到ArkWeb_ResourceRequest对象中。
void * OH_ArkWebResourceRequest_GetUserData (const ArkWeb_ResourceRequest *resourceRequest) 从ArkWeb_ResourceRequest获取用户数据。
void OH_ArkWebResourceRequest_GetMethod (const ArkWeb_ResourceRequest *resourceRequest, char **method) 获取请求的method。
void OH_ArkWebResourceRequest_GetUrl (const ArkWeb_ResourceRequest *resourceRequest, char **url) 获取请求的url。
void OH_ArkWebResourceRequest_GetHttpBodyStream (const ArkWeb_ResourceRequest *resourceRequest, ArkWeb_HttpBodyStream **httpBodyStream) 创建一个ArkWeb_HttpBodyStream,用于读取请求的上传数据。
void OH_ArkWebResourceRequest_DestroyHttpBodyStream (ArkWeb_HttpBodyStream *httpBodyStream) 销毁ArkWeb_HttpBodyStream对象。
int32_t OH_ArkWebResourceRequest_GetResourceType (const ArkWeb_ResourceRequest *resourceRequest) 获取请求的资源类型。
void OH_ArkWebResourceRequest_GetFrameUrl (const ArkWeb_ResourceRequest *resourceRequest, char **frameUrl) 获取触发此请求的Frame的URL。
int32_t OH_ArkWebHttpBodyStream_SetUserData (ArkWeb_HttpBodyStream *httpBodyStream, void *userData) 将一个用户数据设置到ArkWeb_HttpBodyStream对象中。
void * OH_ArkWebHttpBodyStream_GetUserData (const ArkWeb_HttpBodyStream *httpBodyStream) 从ArkWeb_HttpBodyStream获取用户数据。
int32_t OH_ArkWebHttpBodyStream_SetReadCallback (ArkWeb_HttpBodyStream *httpBodyStream, ArkWeb_HttpBodyStreamReadCallback readCallback) 为OH_ArkWebHttpBodyStream_Read设置回调函数。
int32_t OH_ArkWebHttpBodyStream_Init (ArkWeb_HttpBodyStream *httpBodyStream, ArkWeb_HttpBodyStreamInitCallback initCallback) 初始化ArkWeb_HttpBodyStream。
void OH_ArkWebHttpBodyStream_Read (const ArkWeb_HttpBodyStream *httpBodyStream, uint8_t *buffer, int bufLen) 将请求的上传数据读取到buffer。
uint64_t OH_ArkWebHttpBodyStream_GetSize (const ArkWeb_HttpBodyStream *httpBodyStream) 获取httpBodyStream的大小。
uint64_t OH_ArkWebHttpBodyStream_GetPosition (const ArkWeb_HttpBodyStream *httpBodyStream) 获取httpBodyStream当前的读取位置。
bool OH_ArkWebHttpBodyStream_IsChunked (const ArkWeb_HttpBodyStream *httpBodyStream) 获取httpBodyStream是否采用分块传输。
bool OH_ArkWebHttpBodyStream_IsEof (const ArkWeb_HttpBodyStream *httpBodyStream) 如果httpBodyStream中的所有数据都已被读取,则返回true。
bool OH_ArkWebHttpBodyStream_IsInMemory (const ArkWeb_HttpBodyStream *httpBodyStream) 如果httpBodyStream中的上传数据完全在内存中,并且所有读取请求都将同步成功,则返回true。
int32_t OH_ArkWebResourceRequest_Destroy (const ArkWeb_ResourceRequest *resourceRequest) 销毁ArkWeb_ResourceRequest对象。
void OH_ArkWebResourceRequest_GetReferrer (const ArkWeb_ResourceRequest *resourceRequest, char **referrer) 获取请求的Referrer。
void OH_ArkWebResourceRequest_GetRequestHeaders (const ArkWeb_ResourceRequest *resourceRequest, ArkWeb_RequestHeaderList **requestHeaderList) 获取请求的请求头列表OH_ArkWeb_RequestHeaderList。
bool OH_ArkWebResourceRequest_IsRedirect (const ArkWeb_ResourceRequest *resourceRequest) 判断这是否是一个重定向请求。
bool OH_ArkWebResourceRequest_IsMainFrame (const ArkWeb_ResourceRequest *resourceRequest) 判断这是否是主框架文档资源的请求。
bool OH_ArkWebResourceRequest_HasGesture (const ArkWeb_ResourceRequest *resourceRequest) 判断这是否是一个由用户手势触发的请求。
int32_t OH_ArkWeb_RegisterCustomSchemes (const char *scheme, int32_t option) 将custom scheme注册到ArkWeb。
bool OH_ArkWebServiceWorker_SetSchemeHandler (const char *scheme, ArkWeb_SchemeHandler *schemeHandler) 为指定scheme设置一个ArkWeb_SchemeHandler以拦截ServiceWorker触发的该scheme类型的请求。
bool OH_ArkWeb_SetSchemeHandler (const char *scheme, const char *webTag, ArkWeb_SchemeHandler *schemeHandler) 为指定scheme设置一个ArkWeb_SchemeHandler以拦截该scheme类型的请求。
int32_t OH_ArkWebServiceWorker_ClearSchemeHandlers () 清除为ServiceWorker注册的SchemeHandler。
int32_t OH_ArkWeb_ClearSchemeHandlers (const char *webTag) 清除为指定web注册的SchemeHandler。
void OH_ArkWeb_CreateSchemeHandler (ArkWeb_SchemeHandler **schemeHandler) 创建一个ArkWeb_SchemeHandler对象。
void OH_ArkWeb_DestroySchemeHandler (ArkWeb_SchemeHandler *schemeHandler) 销毁一个ArkWeb_SchemeHandler对象。
int32_t OH_ArkWebSchemeHandler_SetUserData (ArkWeb_SchemeHandler *schemeHandler, void *userData) 将一个用户数据设置到ArkWeb_SchemeHandler对象中。
void * OH_ArkWebSchemeHandler_GetUserData (const ArkWeb_SchemeHandler *schemeHandler) 从ArkWeb_SchemeHandler获取用户数据。
int32_t OH_ArkWebSchemeHandler_SetOnRequestStart (ArkWeb_SchemeHandler *schemeHandler, ArkWeb_OnRequestStart onRequestStart) 为SchemeHandler设置OnRequestStart回调。
int32_t OH_ArkWebSchemeHandler_SetOnRequestStop (ArkWeb_SchemeHandler *schemeHandler, ArkWeb_OnRequestStop onRequestStop) 为SchemeHandler设置OnRequestStop回调。
void OH_ArkWeb_CreateResponse (ArkWeb_Response **response) 为被拦截的请求创建一个ArkWeb_Response对象。
void OH_ArkWeb_DestroyResponse (ArkWeb_Response *response) 销毁一个ArkWeb_Response对象。
int32_t OH_ArkWebResponse_SetUrl (ArkWeb_Response *response, const char *url) 设置经过重定向或由于HSTS而改变后的解析URL,设置后会触发跳转。
void OH_ArkWebResponse_GetUrl (const ArkWeb_Response *response, char **url) 获取经过重定向或由于HSTS而更改后的解析URL。
int32_t OH_ArkWebResponse_SetError (ArkWeb_Response *response, ArkWeb_NetError errorCode) 给ArkWeb_Response对象设置一个错误码。
ArkWeb_NetError OH_ArkWebResponse_GetError (const ArkWeb_Response *response) 获取ArkWeb_Response的错误码。
int32_t OH_ArkWebResponse_SetStatus (ArkWeb_Response *response, int status) 为ArkWeb_Response对象设置一个HTTP状态码。
int OH_ArkWebResponse_GetStatus (const ArkWeb_Response *response) 获取ArkWeb_Response的HTTP状态码。
int32_t OH_ArkWebResponse_SetStatusText (ArkWeb_Response *response, const char *statusText) 为ArkWeb_Response设置状态文本。
void OH_ArkWebResponse_GetStatusText (const ArkWeb_Response *response, char **statusText) 获取ArkWeb_Response的状态文本。
int32_t OH_ArkWebResponse_SetMimeType (ArkWeb_Response *response, const char *mimeType) 为ArkWeb_Response设置媒体类型。
void OH_ArkWebResponse_GetMimeType (const ArkWeb_Response *response, char **mimeType) 获取ArkWeb_Response的媒体类型。
int32_t OH_ArkWebResponse_SetCharset (ArkWeb_Response *response, const char *charset) 为ArkWeb_Response设置字符集。
void OH_ArkWebResponse_GetCharset (const ArkWeb_Response *response, char **charset) 获取ArkWeb_Response的字符集。
int32_t OH_ArkWebResponse_SetHeaderByName (ArkWeb_Response *response, const char *name, const char *value, bool overwrite) 为ArkWeb_Response设置一个header。
void OH_ArkWebResponse_GetHeaderByName (const ArkWeb_Response *response, const char *name, char **value) 从ArkWeb_Response中获取header。
int32_t OH_ArkWebResourceHandler_Destroy (const ArkWeb_ResourceHandler *resourceHandler) 销毁一个ArkWeb_ResourceHandler对象。
int32_t OH_ArkWebResourceHandler_DidReceiveResponse (const ArkWeb_ResourceHandler *resourceHandler, const ArkWeb_Response *response) 将构造的响应头传递给被拦截的请求。OH_ArkWebResourceHandler_DidReceiveResponse是必须调用的,如果在收到response前发生错误,在response中设置一个error通过该接口通知给内核。
int32_t OH_ArkWebResourceHandler_DidReceiveData (const ArkWeb_ResourceHandler *resourceHandler, const uint8_t *buffer, int64_t bufLen) 将构造的响应体传递给被拦截的请求。
int32_t OH_ArkWebResourceHandler_DidFinish (const ArkWeb_ResourceHandler *resourceHandler) 通知ArkWeb内核被拦截的请求已经完成,并且没有更多的数据可用。
int32_t OH_ArkWebResourceHandler_DidFailWithError (const ArkWeb_ResourceHandler *resourceHandler, ArkWeb_NetError errorCode) 通知ArkWeb内核被拦截请求应该失败。
void OH_ArkWeb_ReleaseString (char *string) 释放由NDK接口创建的字符串
void OH_ArkWeb_ReleaseByteArray (uint8_t *byteArray) 释放由NDK接口创建的字节数组。

你可能感兴趣的鸿蒙文章

harmony 鸿蒙ArkWeb(方舟Web)

harmony 鸿蒙ArkWeb_AnyNativeAPI

harmony 鸿蒙ArkWeb_ComponentAPI

harmony 鸿蒙ArkWeb_ControllerAPI

harmony 鸿蒙ArkWeb_CookieManagerAPI

harmony 鸿蒙ArkWeb_JavaScriptBridgeData

harmony 鸿蒙ArkWeb_JavaScriptObject

harmony 鸿蒙ArkWeb_JavaScriptValueAPI

harmony 鸿蒙ArkWeb_ProxyMethod

harmony 鸿蒙ArkWeb_ProxyMethodWithResult

0  赞