1# arkweb_scheme_handler.h 2<!--Kit: ArkWeb--> 3<!--Subsystem: Web--> 4<!--Owner: @aohui--> 5<!--Designer: @yaomingliu--> 6<!--Tester: @ghiker--> 7<!--Adviser: @HelloCrease--> 8 9## 概述 10 11声明用于拦截来自ArkWeb的请求的API。 12 13**库:** libohweb.so 14 15**系统能力:** SystemCapability.Web.Webview.Core 16 17**起始版本:** 12 18 19**相关模块:** [Web](capi-web.md) 20 21**相关示例:** <!--RP1-->[ArkWebSchemeHandler](https://gitcode.com/openharmony/applications_app_samples/tree/master/code/DocsSample/ArkWeb/ArkWebSchemeHandler)<!--RP1End--> 22 23## 汇总 24 25### 结构体 26 27| 名称 | typedef关键字 | 描述 | 28| -- | -- | -- | 29| [ArkWeb_SchemeHandler_](capi-web-arkweb-schemehandler.md) | ArkWeb_SchemeHandler | 该类用于拦截指定scheme的请求。 | 30| [ArkWeb_ResourceHandler_](capi-web-arkweb-resourcehandler.md) | ArkWeb_ResourceHandler | 用于被拦截的URL请求。可以通过ArkWeb_ResourceHandler发送自定义请求头以及自定义请求体。 | 31| [ArkWeb_Response_](capi-web-arkweb-response.md) | ArkWeb_Response | 为被拦截的请求构造一个ArkWeb_Response。 | 32| [ArkWeb_ResourceRequest_](capi-web-arkweb-resourcerequest.md) | ArkWeb_ResourceRequest | 对应内核的一个请求,可以通过OH_ArkWeb_ResourceRequest获取请求的URL、method、post data以及其他信息。 | 33| [ArkWeb_RequestHeaderList_](capi-web-arkweb-requestheaderlist.md) | ArkWeb_RequestHeaderList | 请求头列表。 | 34| [ArkWeb_HttpBodyStream_](capi-web-arkweb-httpbodystream.md) | ArkWeb_HttpBodyStream | 请求的上传数据。使用OH_ArkWebHttpBodyStream_接口来读取上传的数据。 | 35 36### 枚举 37 38| 名称 | typedef关键字 | 描述 | 39| -- | -- | -- | 40| [ArkWeb_CustomSchemeOption](#arkweb_customschemeoption) | ArkWeb_CustomSchemeOption | custom scheme的配置信息。 | 41| [ArkWeb_ResourceType](#arkweb_resourcetype) | ArkWeb_ResourceType | 请求的资源类型。这些常量与Chromium中的ResourceType的对应项相匹配,不应重新编号。 | 42 43### 函数 44 45| 名称 | typedef关键字 | 描述 | 46| -- | -- | -- | 47| [typedef void (\*ArkWeb_OnRequestStart)(const ArkWeb_SchemeHandler* schemeHandler,ArkWeb_ResourceRequest* resourceRequest,const ArkWeb_ResourceHandler* resourceHandler,bool* intercept)](#arkweb_onrequeststart) | ArkWeb_OnRequestStart | 请求开始的回调,这将在IO线程上被调用。 | 48| [typedef void (\*ArkWeb_OnRequestStop)(const ArkWeb_SchemeHandler* schemeHandler,const ArkWeb_ResourceRequest* resourceRequest)](#arkweb_onrequeststop) | ArkWeb_OnRequestStop | 请求完成时的回调函数。这将在IO线程上被调用。<br>应该使用ArkWeb_ResourceRequest_Destroy销毁resourceRequest,<br>并使用ArkWeb_ResourceHandler_Destroy销毁在ArkWeb_OnRequestStart中接收到的ArkWeb_ResourceHandler。 | 49| [typedef void (\*ArkWeb_HttpBodyStreamReadCallback)(const ArkWeb_HttpBodyStream* httpBodyStream,uint8_t* buffer,int bytesRead)](#arkweb_httpbodystreamreadcallback) | ArkWeb_HttpBodyStreamReadCallback | 当OH_ArkWebHttpBodyStream_Read读取操作完成时的回调函数。 | 50| [typedef void (\*ArkWeb_HttpBodyStreamAsyncReadCallback)(const ArkWeb_HttpBodyStream* httpBodyStream,uint8_t* buffer,int bytesRead)](#arkweb_httpbodystreamasyncreadcallback) | ArkWeb_HttpBodyStreamAsyncReadCallback | 当OH_ArkWebHttpBodyStream_AsyncRead读取操作完成时的回调函数。 | 51| [typedef void (\*ArkWeb_HttpBodyStreamInitCallback)(const ArkWeb_HttpBodyStream* httpBodyStream, ArkWeb_NetError result)](#arkweb_httpbodystreaminitcallback) | ArkWeb_HttpBodyStreamInitCallback | ArkWeb_HttpBodyStream初始化操作完成时回调函数。 | 52| [void OH_ArkWebRequestHeaderList_Destroy(ArkWeb_RequestHeaderList* requestHeaderList)](#oh_arkwebrequestheaderlist_destroy) | - | 销毁ArkWeb_RequestHeaderList对象。 | 53| [int32_t OH_ArkWebRequestHeaderList_GetSize(const ArkWeb_RequestHeaderList* requestHeaderList)](#oh_arkwebrequestheaderlist_getsize) | - | 获取请求头列表的大小。 | 54| [void OH_ArkWebRequestHeaderList_GetHeader(const ArkWeb_RequestHeaderList* requestHeaderList,int32_t index,char** key,char** value)](#oh_arkwebrequestheaderlist_getheader) | - | 获取指定的请求头。 | 55| [int32_t OH_ArkWebResourceRequest_SetUserData(ArkWeb_ResourceRequest* resourceRequest, void* userData)](#oh_arkwebresourcerequest_setuserdata) | - | 将一个用户数据设置到ArkWeb_ResourceRequest对象中。 | 56| [void* OH_ArkWebResourceRequest_GetUserData(const ArkWeb_ResourceRequest* resourceRequest)](#oh_arkwebresourcerequest_getuserdata) | - | 从ArkWeb_ResourceRequest获取用户数据。 | 57| [void OH_ArkWebResourceRequest_GetMethod(const ArkWeb_ResourceRequest* resourceRequest, char** method)](#oh_arkwebresourcerequest_getmethod) | - | 获取请求的method。 | 58| [void OH_ArkWebResourceRequest_GetUrl(const ArkWeb_ResourceRequest* resourceRequest, char** url)](#oh_arkwebresourcerequest_geturl) | - | 获取请求的url。 | 59| [void OH_ArkWebResourceRequest_GetHttpBodyStream(const ArkWeb_ResourceRequest* resourceRequest,ArkWeb_HttpBodyStream** httpBodyStream)](#oh_arkwebresourcerequest_gethttpbodystream) | - | 创建一个ArkWeb_HttpBodyStream,用于读取请求的上传数据。 | 60| [void OH_ArkWebResourceRequest_DestroyHttpBodyStream(ArkWeb_HttpBodyStream* httpBodyStream)](#oh_arkwebresourcerequest_destroyhttpbodystream) | - | 销毁ArkWeb_HttpBodyStream对象。 | 61| [int32_t OH_ArkWebResourceRequest_GetResourceType(const ArkWeb_ResourceRequest* resourceRequest)](#oh_arkwebresourcerequest_getresourcetype) | - | 获取请求的资源类型。 | 62| [void OH_ArkWebResourceRequest_GetFrameUrl(const ArkWeb_ResourceRequest* resourceRequest, char** frameUrl)](#oh_arkwebresourcerequest_getframeurl) | - | 获取触发此请求的Frame的URL。 | 63| [int32_t OH_ArkWebHttpBodyStream_SetUserData(ArkWeb_HttpBodyStream* httpBodyStream, void* userData)](#oh_arkwebhttpbodystream_setuserdata) | - | 将一个用户数据设置到ArkWeb_HttpBodyStream对象中。 | 64| [void* OH_ArkWebHttpBodyStream_GetUserData(const ArkWeb_HttpBodyStream* httpBodyStream)](#oh_arkwebhttpbodystream_getuserdata) | - | 从ArkWeb_HttpBodyStream获取用户数据。 | 65| [int32_t OH_ArkWebHttpBodyStream_SetReadCallback(ArkWeb_HttpBodyStream* httpBodyStream,ArkWeb_HttpBodyStreamReadCallback readCallback)](#oh_arkwebhttpbodystream_setreadcallback) | - | 为OH_ArkWebHttpBodyStream_Read设置回调函数。OH_ArkWebHttpBodyStream_Read的结果将通过readCallback通知给调用者。<br>该回调函数将在与OH_ArkWebHttpBodyStream_Read相同的线程中运行。 | 66| [int32_t OH_ArkWebHttpBodyStream_SetAsyncReadCallback(ArkWeb_HttpBodyStream* httpBodyStream,ArkWeb_HttpBodyStreamReadCallback readCallback)](#oh_arkwebhttpbodystream_setasyncreadcallback) | - | 为OH_ArkWebHttpBodyStream_AsyncRead设置回调函数。OH_ArkWebHttpBodyStream_AsyncRead的结果将通过readCallback通知给开发者。<br>该回调函数将在与OH_ArkWebHttpBodyStream_AsyncRead相同的线程中运行。 | 67| [int32_t OH_ArkWebHttpBodyStream_Init(ArkWeb_HttpBodyStream* httpBodyStream,ArkWeb_HttpBodyStreamInitCallback initCallback)](#oh_arkwebhttpbodystream_init) | - | 初始化ArkWeb_HttpBodyStream。在调用任何其他函数之前,必须调用此函数。该接口需要在IO线程调用。 | 68| [void OH_ArkWebHttpBodyStream_Read(const ArkWeb_HttpBodyStream* httpBodyStream, uint8_t* buffer, int bufLen)](#oh_arkwebhttpbodystream_read) | - | 将请求的上传数据读取到buffer。buffer的大小必须大于bufLen。我们将从工作线程读取数据到buffer,因此在回调函数返回之前,不应在其他线程中使用buffer,以避免并发问题。 | 69| [void OH_ArkWebHttpBodyStream_AsyncRead(const ArkWeb_HttpBodyStream* httpBodyStream, uint8_t* buffer, int bufLen)](#oh_arkwebhttpbodystream_asyncread) | - | 将请求的上传数据读取到buffer。buffer的大小必须大于bufLen。数据将从工作线程读取数据到buffer,因此在回调函数返回之前,不应在其他线程中使用buffer,以避免并发问题。 | 70| [uint64_t OH_ArkWebHttpBodyStream_GetSize(const ArkWeb_HttpBodyStream* httpBodyStream)](#oh_arkwebhttpbodystream_getsize) | - | 获取httpBodyStream的大小。当数据以分块的形式传输或httpBodyStream无效时,始终返回0。 | 71| [uint64_t OH_ArkWebHttpBodyStream_GetPosition(const ArkWeb_HttpBodyStream* httpBodyStream)](#oh_arkwebhttpbodystream_getposition) | - | 获取httpBodyStream当前的读取位置。 | 72| [bool OH_ArkWebHttpBodyStream_IsChunked(const ArkWeb_HttpBodyStream* httpBodyStream)](#oh_arkwebhttpbodystream_ischunked) | - | 获取httpBodyStream是否采用分块传输。 | 73| [bool OH_ArkWebHttpBodyStream_IsEof(const ArkWeb_HttpBodyStream* httpBodyStream)](#oh_arkwebhttpbodystream_iseof) | - | 如果httpBodyStream中的所有数据都已被读取,则返回true。对于分块传输类型的httpBodyStream,在第一次读取尝试之前返回false。 | 74| [bool OH_ArkWebHttpBodyStream_IsInMemory(const ArkWeb_HttpBodyStream* httpBodyStream)](#oh_arkwebhttpbodystream_isinmemory) | - | 如果httpBodyStream中的上传数据完全在内存中,并且所有读取请求都将同步成功,则返回true。对于分块传输类型的数据,预期返回false。 | 75| [int32_t OH_ArkWebResourceRequest_Destroy(const ArkWeb_ResourceRequest* resourceRequest)](#oh_arkwebresourcerequest_destroy) | - | 销毁ArkWeb_ResourceRequest对象。 | 76| [void OH_ArkWebResourceRequest_GetReferrer(const ArkWeb_ResourceRequest* resourceRequest, char** referrer)](#oh_arkwebresourcerequest_getreferrer) | - | 获取请求的Referrer。 | 77| [void OH_ArkWebResourceRequest_GetRequestHeaders(const ArkWeb_ResourceRequest* resourceRequest,ArkWeb_RequestHeaderList** requestHeaderList)](#oh_arkwebresourcerequest_getrequestheaders) | - | 获取请求的请求头列表OH_ArkWeb_RequestHeaderList。 | 78| [bool OH_ArkWebResourceRequest_IsRedirect(const ArkWeb_ResourceRequest* resourceRequest)](#oh_arkwebresourcerequest_isredirect) | - | 判断这是否是一个重定向请求。 | 79| [bool OH_ArkWebResourceRequest_IsMainFrame(const ArkWeb_ResourceRequest* resourceRequest)](#oh_arkwebresourcerequest_ismainframe) | - | 判断这是否是主框架文档资源的请求。 | 80| [bool OH_ArkWebResourceRequest_HasGesture(const ArkWeb_ResourceRequest* resourceRequest)](#oh_arkwebresourcerequest_hasgesture) | - | 判断这是否是一个由用户手势触发的请求。 | 81| [int32_t OH_ArkWeb_RegisterCustomSchemes(const char* scheme, int32_t option)](#oh_arkweb_registercustomschemes) | - | 将custom scheme注册到ArkWeb。对于内置的HTTP、HTTPS、FILE、FTP、ABOUT和DATA协议,不应调用此函数。<br>此函数应在主线程上调用并且需要在内核初始化之前调用。 | 82| [bool OH_ArkWebServiceWorker_SetSchemeHandler(const char* scheme, ArkWeb_SchemeHandler* schemeHandler)](#oh_arkwebserviceworker_setschemehandler) | - | 为指定scheme设置一个ArkWeb_SchemeHandler以拦截ServiceWorker触发的该scheme类型的请求。应该在创建BrowserContext之后设置SchemeHandler。<br>可以使用WebviewController.initializeWebEngine来初始化BrowserContext而无需创建ArkWeb。 | 83| [bool OH_ArkWeb_SetSchemeHandler(const char* scheme, const char* webTag, ArkWeb_SchemeHandler* schemeHandler)](#oh_arkweb_setschemehandler) | - | 为指定scheme设置一个ArkWeb_SchemeHandler以拦截该scheme类型的请求。应该在创建BrowserContext之后设置SchemeHandler。<br>可以使用WebviewController.initializeWebEngine来初始化BrowserContext而无需创建ArkWeb。 | 84| [int32_t OH_ArkWebServiceWorker_ClearSchemeHandlers()](#oh_arkwebserviceworker_clearschemehandlers) | - | 清除为ServiceWorker注册的SchemeHandler。 | 85| [int32_t OH_ArkWeb_ClearSchemeHandlers(const char* webTag)](#oh_arkweb_clearschemehandlers) | - | 清除为指定web注册的SchemeHandler。 | 86| [void OH_ArkWeb_CreateSchemeHandler(ArkWeb_SchemeHandler** schemeHandler)](#oh_arkweb_createschemehandler) | - | 创建一个ArkWeb_SchemeHandler对象。 | 87| [void OH_ArkWeb_DestroySchemeHandler(ArkWeb_SchemeHandler* schemeHandler)](#oh_arkweb_destroyschemehandler) | - | 销毁一个ArkWeb_SchemeHandler对象。 | 88| [int32_t OH_ArkWebSchemeHandler_SetUserData(ArkWeb_SchemeHandler* schemeHandler, void* userData)](#oh_arkwebschemehandler_setuserdata) | - | 将一个用户数据设置到ArkWeb_SchemeHandler对象中。 | 89| [void* OH_ArkWebSchemeHandler_GetUserData(const ArkWeb_SchemeHandler* schemeHandler)](#oh_arkwebschemehandler_getuserdata) | - | 从ArkWeb_SchemeHandler获取用户数据。 | 90| [int32_t OH_ArkWebSchemeHandler_SetOnRequestStart(ArkWeb_SchemeHandler* schemeHandler,ArkWeb_OnRequestStart onRequestStart)](#oh_arkwebschemehandler_setonrequeststart) | - | 为SchemeHandler设置OnRequestStart回调。 | 91| [int32_t OH_ArkWebSchemeHandler_SetOnRequestStop(ArkWeb_SchemeHandler* schemeHandler,ArkWeb_OnRequestStop onRequestStop)](#oh_arkwebschemehandler_setonrequeststop) | - | 为SchemeHandler设置OnRequestStop回调。 | 92| [void OH_ArkWeb_CreateResponse(ArkWeb_Response** response)](#oh_arkweb_createresponse) | - | 为被拦截的请求创建一个ArkWeb_Response对象。 | 93| [void OH_ArkWeb_DestroyResponse(ArkWeb_Response* response)](#oh_arkweb_destroyresponse) | - | 销毁一个ArkWeb_Response对象。 | 94| [int32_t OH_ArkWebResponse_SetUrl(ArkWeb_Response* response, const char* url)](#oh_arkwebresponse_seturl) | - | 设置经过重定向或由于HSTS而改变后的解析URL,设置后会触发跳转。 | 95| [void OH_ArkWebResponse_GetUrl(const ArkWeb_Response* response, char** url)](#oh_arkwebresponse_geturl) | - | 获取经过重定向或由于HSTS而更改后的解析URL。 | 96| [int32_t OH_ArkWebResponse_SetError(ArkWeb_Response* response, ArkWeb_NetError errorCode)](#oh_arkwebresponse_seterror) | - | 给ArkWeb_Response对象设置一个错误码。 | 97| [ArkWeb_NetError OH_ArkWebResponse_GetError(const ArkWeb_Response* response)](#oh_arkwebresponse_geterror) | - | 获取ArkWeb_Response的错误码。 | 98| [int32_t OH_ArkWebResponse_SetStatus(ArkWeb_Response* response, int status)](#oh_arkwebresponse_setstatus) | - | 为ArkWeb_Response对象设置一个HTTP状态码。 | 99| [int OH_ArkWebResponse_GetStatus(const ArkWeb_Response* response)](#oh_arkwebresponse_getstatus) | - | 获取ArkWeb_Response的HTTP状态码。 | 100| [int32_t OH_ArkWebResponse_SetStatusText(ArkWeb_Response* response, const char* statusText)](#oh_arkwebresponse_setstatustext) | - | 为ArkWeb_Response设置状态文本。 | 101| [void OH_ArkWebResponse_GetStatusText(const ArkWeb_Response* response, char** statusText)](#oh_arkwebresponse_getstatustext) | - | 获取ArkWeb_Response的状态文本。 | 102| [int32_t OH_ArkWebResponse_SetMimeType(ArkWeb_Response* response, const char* mimeType)](#oh_arkwebresponse_setmimetype) | - | 为ArkWeb_Response设置媒体类型。 | 103| [void OH_ArkWebResponse_GetMimeType(const ArkWeb_Response* response, char** mimeType)](#oh_arkwebresponse_getmimetype) | - | 获取ArkWeb_Response的媒体类型。 | 104| [int32_t OH_ArkWebResponse_SetCharset(ArkWeb_Response* response, const char* charset)](#oh_arkwebresponse_setcharset) | - | 为ArkWeb_Response设置字符集。 | 105| [void OH_ArkWebResponse_GetCharset(const ArkWeb_Response* response, char** charset)](#oh_arkwebresponse_getcharset) | - | 获取ArkWeb_Response的字符集。 | 106| [int32_t OH_ArkWebResponse_SetHeaderByName(ArkWeb_Response* response,const char* name,const char* value,bool overwrite)](#oh_arkwebresponse_setheaderbyname) | - | 为ArkWeb_Response设置一个header。 | 107| [void OH_ArkWebResponse_GetHeaderByName(const ArkWeb_Response* response, const char* name, char** value)](#oh_arkwebresponse_getheaderbyname) | - | 从ArkWeb_Response中获取header。 | 108| [int32_t OH_ArkWebResourceHandler_Destroy(const ArkWeb_ResourceHandler* resourceHandler)](#oh_arkwebresourcehandler_destroy) | - | 销毁一个ArkWeb_ResourceHandler对象。 | 109| [int32_t OH_ArkWebResourceHandler_DidReceiveResponse(const ArkWeb_ResourceHandler* resourceHandler,const ArkWeb_Response* response)](#oh_arkwebresourcehandler_didreceiveresponse) | - | 将构造的响应头传递给被拦截的请求。 | 110| [int32_t OH_ArkWebResourceHandler_DidReceiveData(const ArkWeb_ResourceHandler* resourceHandler,const uint8_t* buffer,int64_t bufLen)](#oh_arkwebresourcehandler_didreceivedata) | - | 将构造的响应体传递给被拦截的请求。 | 111| [int32_t OH_ArkWebResourceHandler_DidFinish(const ArkWeb_ResourceHandler* resourceHandler)](#oh_arkwebresourcehandler_didfinish) | - | 通知ArkWeb内核被拦截的请求已经完成,并且没有更多的数据可用。 | 112| [int32_t OH_ArkWebResourceHandler_DidFailWithError(const ArkWeb_ResourceHandler* resourceHandler,ArkWeb_NetError errorCode)](#oh_arkwebresourcehandler_didfailwitherror) | - | 通知ArkWeb内核,被拦截的请求应该失败。 | 113| [int32_t OH_ArkWebResourceHandler_DidFailWithErrorV2(const ArkWeb_ResourceHandler* resourceHandler,ArkWeb_NetError errorCode,bool completeIfNoResponse)](#oh_arkwebresourcehandler_didfailwitherrorv2) | - | 通知ArkWeb内核,被拦截的请求应该失败。对比OH_ArkWebResourceHandler_DidFailWithError接口,新增参数completeIfNoResponse,当值为true时,若之前未调用过OH_ArkWebResourceHandler_DidReceiveResponse,则会自动生成一个response以完成此次网络请求,网络错误码为-104;值为false时,将等待应用调用OH_ArkWebResourceHandler_DidReceiveResponse并传入response,不会直接完成此次网络请求。 | 114| [void OH_ArkWeb_ReleaseString(char* string)](#oh_arkweb_releasestring) | - | 释放由NDK接口创建的字符串。 | 115| [void OH_ArkWeb_ReleaseByteArray(uint8_t* byteArray)](#oh_arkweb_releasebytearray) | - | 释放由NDK接口创建的字节数组。 | 116 117## 枚举类型说明 118 119### ArkWeb_CustomSchemeOption 120 121``` 122enum ArkWeb_CustomSchemeOption 123``` 124 125**描述:** 126 127custom scheme的配置信息。 128 129**系统能力:** SystemCapability.Web.Webview.Core 130 131**起始版本:** 12 132 133| 枚举项 | 描述 | 134| -- | -- | 135| OH_ARKWEB_SCHEME_OPTION_NONE = 0 | 表示注册自定义scheme时不赋予它任何特殊行为或能力。 | 136| ARKWEB_SCHEME_OPTION_STANDARD = 1 << 0 | 如果设置了ARKWEB_SCHEME_OPTION_STANDARD,那么该scheme将被视为标准scheme来处理。 | 137| ARKWEB_SCHEME_OPTION_LOCAL = 1 << 1 | 如果设置了ARKWEB_SCHEME_OPTION_LOCAL,则将使用与“file” URL相同的安全规则来处理该scheme。 | 138| ARKWEB_SCHEME_OPTION_DISPLAY_ISOLATED = 1 << 2 | 如果设置了ARKWEB_SCHEME_OPTION_DISPLAY_ISOLATED,则该scheme的请求只能由使用相同scheme加载的页面中发起。 | 139| ARKWEB_SCHEME_OPTION_SECURE = 1 << 3 | 如果设置了ARKWEB_SCHEME_OPTION_SECURE,则将使用与“https” URL相同的安全规则来处理该scheme。 | 140| ARKWEB_SCHEME_OPTION_CORS_ENABLED = 1 << 4 | 如果设置了ARKWEB_SCHEME_OPTION_CORS_ENABLED,则该scheme可以发送CORS请求。在大多数情况下,当设置了ARKWEB_SCHEME_OPTION_STANDARD时,应该设置此值。 | 141| ARKWEB_SCHEME_OPTION_CSP_BYPASSING = 1 << 5 | 如果设置了ARKWEB_SCHEME_OPTION_CSP_BYPASSING,则该scheme可以绕过内容安全策略(CSP)检查。 | 142| ARKWEB_SCHEME_OPTION_FETCH_ENABLED = 1 << 6 | 如果设置了ARKWEB_SCHEME_OPTION_FETCH_ENABLED,则可以发起该scheme的FETCH API请求。 | 143| ARKWEB_SCHEME_OPTION_CODE_CACHE_ENABLED = 1 << 7 | 如果设置了ARKWEB_SCHEME_OPTION_CODE_CACHE_ENABLED,则该scheme的js资源支持生成code cache。 | 144 145### ArkWeb_ResourceType 146 147``` 148enum ArkWeb_ResourceType 149``` 150 151**描述:** 152 153请求的资源类型。这些常量与Chromium中的ResourceType的对应项相匹配,不应重新编号。<br> 154 155**系统能力:** SystemCapability.Web.Webview.Core 156 157**起始版本:** 12 158 159| 枚举项 | 描述 | 160| -- | -- | 161| MAIN_FRAME = 0 | 顶层页面。 | 162| SUB_FRAME = 1 | Frame或Iframe。 | 163| STYLE_SHEET = 2 | CSS样式表。 | 164| SCRIPT = 3 | 外部脚本。 | 165| IMAGE = 4 | 图片(jpg/gif/png/以及其他)。 | 166| FONT_RESOURCE = 5 | 字体。 | 167| SUB_RESOURCE = 6 | 其他子资源。如果实际类型未知,则是默认类型。 | 168| OBJECT = 7 | 插件的Object(或embed)标签,或者插件请求的资源。 | 169| MEDIA = 8 | 媒体资源。 | 170| WORKER = 9 | 专用工作线程的主资源。 | 171| SHARED_WORKER = 10 | 共享工作线程的主资源。 | 172| PREFETCH = 11 | 明确的预取请求。 | 173| FAVICON = 12 | 网站图标。 | 174| XHR = 13 | XMLHttpRequest。 | 175| PING = 14 | /sendBeacon的Ping请求。 | 176| SERVICE_WORKER = 15 | service worker的主资源。 | 177| CSP_REPORT = 16 | 内容安全策略违规报告。 | 178| PLUGIN_RESOURCE = 17 | 插件请求的资源。 | 179| NAVIGATION_PRELOAD_MAIN_FRAME = 19 | 触发service worker预热的主frame跳转请求。 | 180| NAVIGATION_PRELOAD_SUB_FRAME = 20 | 触发service worker预热的子frame跳转请求。 | 181 182 183## 函数说明 184 185### ArkWeb_OnRequestStart() 186 187``` 188typedef void (*ArkWeb_OnRequestStart)(const ArkWeb_SchemeHandler* schemeHandler,ArkWeb_ResourceRequest* resourceRequest,const ArkWeb_ResourceHandler* resourceHandler,bool* intercept) 189``` 190 191**描述:** 192 193请求开始的回调,这将在IO线程上被调用。 194 195**系统能力:** SystemCapability.Web.Webview.Core 196 197**起始版本:** 12 198 199 200**参数:** 201 202| 参数项 | 描述 | 203|----------------------------------------------------------------------------| -- | 204| const [ArkWeb_SchemeHandler](capi-web-arkweb-schemehandler.md)* schemeHandler | ArkWeb_SchemeHandler。 | 205| [ArkWeb_ResourceRequest](capi-web-arkweb-resourcerequest.md)* resourceRequest | 通过该对象获取请求的信息。 | 206| const [ArkWeb_ResourceHandler](capi-web-arkweb-resourcehandler.md)* resourceHandler | 请求的ArkWeb_ResourceHandler。如果intercept设置为false,则不应使用它。 | 207| bool* intercept | 如果为true,则会拦截请求;如果为false,则不会拦截。 | 208 209### ArkWeb_OnRequestStop() 210 211``` 212typedef void (*ArkWeb_OnRequestStop)(const ArkWeb_SchemeHandler* schemeHandler,const ArkWeb_ResourceRequest* resourceRequest) 213``` 214 215**描述:** 216 217请求完成时的回调函数。这将在IO线程上被调用。 218 219应该使用ArkWeb_ResourceRequest_Destroy销毁resourceRequest,并使用ArkWeb_ResourceHandler_Destroy销毁在ArkWeb_OnRequestStart中接收到的ArkWeb_ResourceHandler。 220 221**系统能力:** SystemCapability.Web.Webview.Core 222 223**起始版本:** 12 224 225 226**参数:** 227 228| 参数项 | 描述 | 229| -- | -- | 230| const [ArkWeb_SchemeHandler](capi-web-arkweb-schemehandler.md)* schemeHandler | ArkWeb_SchemeHandler。 | 231| const [ArkWeb_ResourceRequest](capi-web-arkweb-resourcerequest.md)* resourceRequest | ArkWeb_ResourceRequest。 | 232 233### ArkWeb_HttpBodyStreamReadCallback() 234 235``` 236typedef void (*ArkWeb_HttpBodyStreamReadCallback)(const ArkWeb_HttpBodyStream* httpBodyStream,uint8_t* buffer,int bytesRead) 237``` 238 239**描述:** 240 241当OH_ArkWebHttpBodyStream_Read读取操作完成时的回调函数。 242 243**系统能力:** SystemCapability.Web.Webview.Core 244 245**起始版本:** 12 246 247 248**参数:** 249 250| 参数项 | 描述 | 251|-------------------------------------------------| -- | 252| const [ArkWeb_HttpBodyStream](capi-web-arkweb-httpbodystream.md)* httpBodyStream | ArkWeb_HttpBodyStream。 | 253| uint8_t* buffer | 接收数据的buffer。 | 254| int bytesRead | OH_ArkWebHttpBodyStream_Read后的回调函数。如果bytesRead大于0,则表示buffer已填充了bytesRead大小的数据。调用者可以从buffer中读取数据,如果OH_ArkWebHttpBodyStream_IsEOF为false,则调用者可以继续读取剩余的数据。 | 255 256### ArkWeb_HttpBodyStreamAsyncReadCallback() 257 258``` 259typedef void (*ArkWeb_HttpBodyStreamAsyncReadCallback)(const ArkWeb_HttpBodyStream *httpBodyStream,uint8_t *buffer,int bytesRead) 260``` 261 262**描述:** 263 264当OH_ArkWebHttpBodyStream_AsyncRead读取操作完成时的回调函数。 265 266**系统能力:** SystemCapability.Web.Webview.Core 267 268**起始版本:** 20 269 270 271**参数:** 272 273| 参数项 | 描述 | 274|-------------------------------------------------| -- | 275| const [ArkWeb_HttpBodyStream](capi-web-arkweb-httpbodystream.md)* httpBodyStream | ArkWeb_HttpBodyStream。 | 276| uint8_t* buffer | 接收数据的缓存区。 | 277| int bytesRead | 标识异步读取操作执行结果的字节计数值。如果bytesRead大于0,则表示buffer已填充了bytesRead大小的数据。开发者可以从buffer中读取数据,如果OH_ArkWebHttpBodyStream_IsEOF为false,则开发者可以继续读取剩余的数据。 | 278 279### ArkWeb_HttpBodyStreamInitCallback() 280 281``` 282typedef void (*ArkWeb_HttpBodyStreamInitCallback)(const ArkWeb_HttpBodyStream* httpBodyStream, ArkWeb_NetError result) 283``` 284 285**描述:** 286 287ArkWeb_HttpBodyStream初始化操作完成时回调函数。 288 289**系统能力:** SystemCapability.Web.Webview.Core 290 291**起始版本:** 12 292 293**参数:** 294 295| 参数项 | 描述 | 296|-------------------------------------------------------------------------------| -- | 297| const [ArkWeb_HttpBodyStream](capi-web-arkweb-httpbodystream.md)* httpBodyStream | ArkWeb_HttpBodyStream。 | 298| [ArkWeb_NetError](capi-arkweb-net-error-list-h.md#arkweb_neterror) result | 成功时返回ARKWEB_NET_OK,否则请参考[arkweb_net_error_list.h](capi-arkweb-net-error-list-h.md)。 | 299 300### OH_ArkWebRequestHeaderList_Destroy() 301 302``` 303void OH_ArkWebRequestHeaderList_Destroy(ArkWeb_RequestHeaderList* requestHeaderList) 304``` 305 306**描述:** 307 308销毁ArkWeb_RequestHeaderList对象。 309 310**系统能力:** SystemCapability.Web.Webview.Core 311 312**起始版本:** 12 313 314 315**参数:** 316 317| 参数项 | 描述 | 318| -- | -- | 319| [ArkWeb_RequestHeaderList](capi-web-arkweb-requestheaderlist.md)* requestHeaderList | 将被销毁的ArkWeb_RequestHeaderList。 | 320 321### OH_ArkWebRequestHeaderList_GetSize() 322 323``` 324int32_t OH_ArkWebRequestHeaderList_GetSize(const ArkWeb_RequestHeaderList* requestHeaderList) 325``` 326 327**描述:** 328 329获取请求头列表的大小。 330 331**系统能力:** SystemCapability.Web.Webview.Core 332 333**起始版本:** 12 334 335 336**参数:** 337 338| 参数项 | 描述 | 339| -- | -- | 340| const [ArkWeb_RequestHeaderList](capi-web-arkweb-requestheaderlist.md)* requestHeaderList | 请求头的列表。 | 341 342**返回:** 343 344| 类型 | 说明 | 345| -- | -- | 346| int32_t | 请求头的大小。如果requestHeaderList无效,则为-1。 | 347 348### OH_ArkWebRequestHeaderList_GetHeader() 349 350``` 351void OH_ArkWebRequestHeaderList_GetHeader(const ArkWeb_RequestHeaderList* requestHeaderList,int32_t index,char** key,char** value) 352``` 353 354**描述:** 355 356获取指定的请求头。 357 358**系统能力:** SystemCapability.Web.Webview.Core 359 360**起始版本:** 12 361 362 363**参数:** 364 365| 参数项 | 描述 | 366| -- | -- | 367| const ArkWeb_RequestHeaderList* requestHeaderList | 请求头列表。 | 368| int32_t index | 请求头的索引。 | 369| char** key | 请求头的键(key)。调用者必须使用OH_ArkWeb_ReleaseString函数来释放这个字符串。 | 370| char** value | 请求头的值(value)。调用者必须使用OH_ArkWeb_ReleaseString函数来释放这个字符串。 | 371 372### OH_ArkWebResourceRequest_SetUserData() 373 374``` 375int32_t OH_ArkWebResourceRequest_SetUserData(ArkWeb_ResourceRequest* resourceRequest, void* userData) 376``` 377 378**描述:** 379 380将一个用户数据设置到ArkWeb_ResourceRequest对象中。 381 382**系统能力:** SystemCapability.Web.Webview.Core 383 384**起始版本:** 12 385 386 387**参数:** 388 389| 参数项 | 描述 | 390| -- | -- | 391| [ArkWeb_ResourceRequest](capi-web-arkweb-resourcerequest.md)* resourceRequest | ArkWeb_ResourceRequest。 | 392| void* userData | 将要设置的用户数据。 | 393 394**返回:** 395 396| 类型 | 说明 | 397| -- | -- | 398| int32_t | 如果返回0,表示成功;返回17100101,表示参数无效。 | 399 400### OH_ArkWebResourceRequest_GetUserData() 401 402``` 403void* OH_ArkWebResourceRequest_GetUserData(const ArkWeb_ResourceRequest* resourceRequest) 404``` 405 406**描述:** 407 408从ArkWeb_ResourceRequest获取用户数据。 409 410**系统能力:** SystemCapability.Web.Webview.Core 411 412**起始版本:** 12 413 414 415**参数:** 416 417| 参数项 | 描述 | 418| -- | -- | 419| const [ArkWeb_ResourceRequest](capi-web-arkweb-resourcerequest.md)* resourceRequest | ArkWeb_ResourceRequest。 | 420 421**返回:** 422 423| 类型 | 说明 | 424| -- | -- | 425| void* | 设置的用户数据。 | 426 427### OH_ArkWebResourceRequest_GetMethod() 428 429``` 430void OH_ArkWebResourceRequest_GetMethod(const ArkWeb_ResourceRequest* resourceRequest, char** method) 431``` 432 433**描述:** 434 435获取请求的method。 436 437**系统能力:** SystemCapability.Web.Webview.Core 438 439**起始版本:** 12 440 441 442**参数:** 443 444| 参数项 | 描述 | 445| -- | -- | 446| const [ArkWeb_ResourceRequest](capi-web-arkweb-resourcerequest.md)* resourceRequest | ArkWeb_ResourceRequest。 | 447| char** method | HTTP请求方法。此函数将为method字符串分配内存,调用者必须使用OH_ArkWeb_ReleaseString释放字符串。 | 448 449### OH_ArkWebResourceRequest_GetUrl() 450 451``` 452void OH_ArkWebResourceRequest_GetUrl(const ArkWeb_ResourceRequest* resourceRequest, char** url) 453``` 454 455**描述:** 456 457获取请求的url。 458 459**系统能力:** SystemCapability.Web.Webview.Core 460 461**起始版本:** 12 462 463 464**参数:** 465 466| 参数项 | 描述 | 467| -- | -- | 468| const [ArkWeb_ResourceRequest](capi-web-arkweb-resourcerequest.md)* resourceRequest | ArkWeb_ResourceRequest。 | 469| char** url | 请求的URL。此函数将为URL字符串分配内存,调用者必须通过OH_ArkWeb_ReleaseString释放该字符串。 | 470 471### OH_ArkWebResourceRequest_GetHttpBodyStream() 472 473``` 474void OH_ArkWebResourceRequest_GetHttpBodyStream(const ArkWeb_ResourceRequest* resourceRequest,ArkWeb_HttpBodyStream** httpBodyStream) 475``` 476 477**描述:** 478 479创建一个ArkWeb_HttpBodyStream,用于读取请求的上传数据。 480 481**系统能力:** SystemCapability.Web.Webview.Core 482 483**起始版本:** 12 484 485 486**参数:** 487 488| 参数项 | 描述 | 489| -- | -- | 490| const [ArkWeb_ResourceRequest](capi-web-arkweb-resourcerequest.md)* resourceRequest | ArkWeb_ResourceRequest。 | 491| [ArkWeb_HttpBodyStream](capi-web-arkweb-httpbodystream.md)** httpBodyStream | 请求的上传数据。此函数将为httpBodyStream分配内存,调用者必须使用OH_ArkWebResourceRequest_DestroyHttpBodyStream释放httpBodyStream。 | 492 493### OH_ArkWebResourceRequest_DestroyHttpBodyStream() 494 495``` 496void OH_ArkWebResourceRequest_DestroyHttpBodyStream(ArkWeb_HttpBodyStream* httpBodyStream) 497``` 498 499**描述:** 500 501销毁ArkWeb_HttpBodyStream对象。 502 503**系统能力:** SystemCapability.Web.Webview.Core 504 505**起始版本:** 12 506 507 508**参数:** 509 510| 参数项 | 描述 | 511| -- | -- | 512| [ArkWeb_HttpBodyStream](capi-web-arkweb-httpbodystream.md)* httpBodyStream | 待销毁的httpBodyStream。 | 513 514### OH_ArkWebResourceRequest_GetResourceType() 515 516``` 517int32_t OH_ArkWebResourceRequest_GetResourceType(const ArkWeb_ResourceRequest* resourceRequest) 518``` 519 520**描述:** 521 522获取请求的资源类型。 523 524**系统能力:** SystemCapability.Web.Webview.Core 525 526**起始版本:** 12 527 528 529**参数:** 530 531| 参数项 | 描述 | 532| -- | -- | 533| const [ArkWeb_ResourceRequest](capi-web-arkweb-resourcerequest.md)* resourceRequest | ArkWeb_ResourceRequest。 | 534 535**返回:** 536 537| 类型 | 说明 | 538| -- | -- | 539| int32_t | 请求的资源类型。如果resourceRequest无效,则为-1。 | 540 541### OH_ArkWebResourceRequest_GetFrameUrl() 542 543``` 544void OH_ArkWebResourceRequest_GetFrameUrl(const ArkWeb_ResourceRequest* resourceRequest, char** frameUrl) 545``` 546 547**描述:** 548 549获取触发此请求的Frame的URL。 550 551**系统能力:** SystemCapability.Web.Webview.Core 552 553**起始版本:** 12 554 555 556**参数:** 557 558| 参数项 | 描述 | 559| -- | -- | 560| const [ArkWeb_ResourceRequest](capi-web-arkweb-resourcerequest.md)* resourceRequest | ArkWeb_ResourceRequest。 | 561| char** frameUrl | 触发此请求的Frame的URL。此函数将为URL字符串分配内存,并且调用者必须通过OH_ArkWeb_ReleaseString来释放该字符串。 | 562 563### OH_ArkWebHttpBodyStream_SetUserData() 564 565``` 566int32_t OH_ArkWebHttpBodyStream_SetUserData(ArkWeb_HttpBodyStream* httpBodyStream, void* userData) 567``` 568 569**描述:** 570 571将一个用户数据设置到ArkWeb_HttpBodyStream对象中。 572 573**系统能力:** SystemCapability.Web.Webview.Core 574 575**起始版本:** 12 576 577 578**参数:** 579 580| 参数项 | 描述 | 581| -- | -- | 582| [ArkWeb_HttpBodyStream](capi-web-arkweb-httpbodystream.md)* httpBodyStream | ArkWeb_HttpBodyStream。 | 583| void* userData | 要设置的用户数据。 | 584 585**返回:** 586 587| 类型 | 说明 | 588| -- | -- | 589| int32_t | 如果返回0,表示成功;返回17100101,表示参数无效。 | 590 591### OH_ArkWebHttpBodyStream_GetUserData() 592 593``` 594void* OH_ArkWebHttpBodyStream_GetUserData(const ArkWeb_HttpBodyStream* httpBodyStream) 595``` 596 597**描述:** 598 599从ArkWeb_HttpBodyStream获取用户数据。 600 601**系统能力:** SystemCapability.Web.Webview.Core 602 603**起始版本:** 12 604 605 606**参数:** 607 608| 参数项 | 描述 | 609| -- | -- | 610| const [ArkWeb_HttpBodyStream](capi-web-arkweb-httpbodystream.md)* httpBodyStream | ArkWeb_HttpBodyStream。 | 611 612**返回:** 613 614| 类型 | 说明 | 615| -- | -- | 616| void* | 设置的用户数据。 | 617 618### OH_ArkWebHttpBodyStream_SetReadCallback() 619 620``` 621int32_t OH_ArkWebHttpBodyStream_SetReadCallback(ArkWeb_HttpBodyStream* httpBodyStream,ArkWeb_HttpBodyStreamReadCallback readCallback) 622``` 623 624**描述:** 625 626为OH_ArkWebHttpBodyStream_Read设置回调函数。OH_ArkWebHttpBodyStream_Read的结果将通过readCallback通知给调用者。<br>该回调函数将在与OH_ArkWebHttpBodyStream_Read相同的线程中运行。 627 628**系统能力:** SystemCapability.Web.Webview.Core 629 630**起始版本:** 12 631 632 633**参数:** 634 635| 参数项 | 描述 | 636| -- | -- | 637| [ArkWeb_HttpBodyStream](capi-web-arkweb-httpbodystream.md)* httpBodyStream | ArkWeb_HttpBodyStream。 | 638| [ArkWeb_HttpBodyStreamReadCallback](#arkweb_httpbodystreamreadcallback) readCallback | OH_ArkWebHttpBodyStream_Read的回调函数。 | 639 640**返回:** 641 642| 类型 | 说明 | 643| -- | -- | 644| int32_t | 如果返回0,表示成功;返回17100101,表示参数无效。 | 645 646### OH_ArkWebHttpBodyStream_SetAsyncReadCallback() 647 648``` 649int32_t OH_ArkWebHttpBodyStream_SetAsyncReadCallback(ArkWeb_HttpBodyStream* httpBodyStream,ArkWeb_HttpBodyStreamAsyncReadCallback readCallback) 650``` 651 652**描述:** 653 654为OH_ArkWebHttpBodyStream_AsyncRead设置回调函数。OH_ArkWebHttpBodyStream_AsyncRead的结果将通过readCallback通知给开发者。<br>该回调函数会在ArkWeb工作线程中运行。 655 656**系统能力:** SystemCapability.Web.Webview.Core 657 658**起始版本:** 20 659 660 661**参数:** 662 663| 参数项 | 描述 | 664| -- | -- | 665| [ArkWeb_HttpBodyStream](capi-web-arkweb-httpbodystream.md)* httpBodyStream | ArkWeb_HttpBodyStream。 | 666| [ArkWeb_HttpBodyStreamAsyncReadCallback](#arkweb_httpbodystreamasyncreadcallback) readCallback | OH_ArkWebHttpBodyStream_AsyncRead的回调函数。 | 667 668**返回:** 669 670| 类型 | 说明 | 671| -- | -- | 672| int32_t | 返回0,表示成功;返回17100101,表示参数无效。 | 673 674 675### OH_ArkWebHttpBodyStream_Init() 676 677``` 678int32_t OH_ArkWebHttpBodyStream_Init(ArkWeb_HttpBodyStream* httpBodyStream,ArkWeb_HttpBodyStreamInitCallback initCallback) 679``` 680 681**描述:** 682 683初始化ArkWeb_HttpBodyStream。在调用任何其他函数之前,必须调用此函数。该接口需要在IO线程调用。 684 685**系统能力:** SystemCapability.Web.Webview.Core 686 687**起始版本:** 12 688 689 690**参数:** 691 692| 参数项 | 描述 | 693| -- | -- | 694| [ArkWeb_HttpBodyStream](capi-web-arkweb-httpbodystream.md)* httpBodyStream | ArkWeb_HttpBodyStream。 | 695| [ArkWeb_HttpBodyStreamInitCallback](#arkweb_httpbodystreaminitcallback) initCallback | 初始化的回调函数。 | 696 697**返回:** 698 699| 类型 | 说明 | 700| -- | -- | 701| int32_t | 如果返回0,表示成功;返回17100101,表示参数无效。 | 702 703### OH_ArkWebHttpBodyStream_Read() 704 705``` 706void OH_ArkWebHttpBodyStream_Read(const ArkWeb_HttpBodyStream* httpBodyStream, uint8_t* buffer, int bufLen) 707``` 708 709**描述:** 710 711将请求的上传数据读取到buffer。buffer的大小必须大于bufLen。我们将从工作线程读取数据到buffer,因此在回调函数返回之前,不应在其他线程中使用buffer,以避免并发问题。 712 713**系统能力:** SystemCapability.Web.Webview.Core 714 715**起始版本:** 12 716 717 718**参数:** 719 720| 参数项 | 描述 | 721| -- | -- | 722| const [ArkWeb_HttpBodyStream](capi-web-arkweb-httpbodystream.md)* httpBodyStream | ArkWeb_HttpBodyStream。 | 723| uint8_t* buffer | 接收数据的buffer。 | 724| int bufLen | 要读取的字节的大小。 | 725 726### OH_ArkWebHttpBodyStream_AsyncRead() 727 728``` 729void OH_ArkWebHttpBodyStream_AsyncRead(const ArkWeb_HttpBodyStream* httpBodyStream, uint8_t* buffer, int bufLen) 730``` 731 732**描述:** 733 734将请求的上传数据读取至buffer,buffer的大小必须超过bufLen。数据将由工作线程读取至buffer,因此在回调函数返回前,不应在其他线程中使用缓冲区,以避免并发问题。 735 736**系统能力:** SystemCapability.Web.Webview.Core 737 738**起始版本:** 20 739 740 741**参数:** 742 743| 参数项 | 描述 | 744| -- | -- | 745| const [ArkWeb_HttpBodyStream](capi-web-arkweb-httpbodystream.md)* httpBodyStream | ArkWeb_HttpBodyStream。 | 746| uint8_t* buffer | 接收数据的缓存区。 | 747| int bufLen | 要读取的字节的大小。 | 748 749### OH_ArkWebHttpBodyStream_GetSize() 750 751``` 752uint64_t OH_ArkWebHttpBodyStream_GetSize(const ArkWeb_HttpBodyStream* httpBodyStream) 753``` 754 755**描述:** 756 757获取httpBodyStream的大小。当数据以分块的形式传输或httpBodyStream无效时,始终返回0。 758 759**系统能力:** SystemCapability.Web.Webview.Core 760 761**起始版本:** 12 762 763 764**参数:** 765 766| 参数项 | 描述 | 767| -- | -- | 768| const [ArkWeb_HttpBodyStream](capi-web-arkweb-httpbodystream.md)* httpBodyStream | ArkWeb_HttpBodyStream。 | 769 770**返回:** 771 772| 类型 | 说明 | 773| -- | -- | 774| uint64_t | httpBodyStream的大小。 | 775 776### OH_ArkWebHttpBodyStream_GetPosition() 777 778``` 779uint64_t OH_ArkWebHttpBodyStream_GetPosition(const ArkWeb_HttpBodyStream* httpBodyStream) 780``` 781 782**描述:** 783 784获取httpBodyStream当前的读取位置。 785 786**系统能力:** SystemCapability.Web.Webview.Core 787 788**起始版本:** 12 789 790 791**参数:** 792 793| 参数项 | 描述 | 794| -- | -- | 795| const [ArkWeb_HttpBodyStream](capi-web-arkweb-httpbodystream.md)* httpBodyStream | ArkWeb_HttpBodyStream。 | 796 797**返回:** 798 799| 类型 | 说明 | 800| -- | -- | 801| uint64_t | httpBodyStream当前的读取位置。如果httpBodyStream无效,则位置为0。 | 802 803### OH_ArkWebHttpBodyStream_IsChunked() 804 805``` 806bool OH_ArkWebHttpBodyStream_IsChunked(const ArkWeb_HttpBodyStream* httpBodyStream) 807``` 808 809**描述:** 810 811获取httpBodyStream是否采用分块传输。 812 813**系统能力:** SystemCapability.Web.Webview.Core 814 815**起始版本:** 12 816 817 818**参数:** 819 820| 参数项 | 描述 | 821| -- | -- | 822| const [ArkWeb_HttpBodyStream](capi-web-arkweb-httpbodystream.md)* httpBodyStream | ArkWeb_HttpBodyStream。 | 823 824**返回:** 825 826| 类型 | 说明 | 827| -- | -- | 828| bool | 如果采用分块传输则返回true;否则返回false。 | 829 830### OH_ArkWebHttpBodyStream_IsEof() 831 832``` 833bool OH_ArkWebHttpBodyStream_IsEof(const ArkWeb_HttpBodyStream* httpBodyStream) 834``` 835 836**描述:** 837 838如果httpBodyStream中的所有数据都已被读取,则返回true。对于分块传输类型的httpBodyStream,在第一次读取尝试之前返回false。 839 840**系统能力:** SystemCapability.Web.Webview.Core 841 842**起始版本:** 12 843 844 845**参数:** 846 847| 参数项 | 描述 | 848| -- | -- | 849| const [ArkWeb_HttpBodyStream](capi-web-arkweb-httpbodystream.md)* httpBodyStream | ArkWeb_HttpBodyStream。 | 850 851**返回:** 852 853| 类型 | 说明 | 854| -- | -- | 855| bool | 如果所有数据都已被读取则返回true;否则返回false。 | 856 857### OH_ArkWebHttpBodyStream_IsInMemory() 858 859``` 860bool OH_ArkWebHttpBodyStream_IsInMemory(const ArkWeb_HttpBodyStream* httpBodyStream) 861``` 862 863**描述:** 864 865如果httpBodyStream中的上传数据完全在内存中,并且所有读取请求都将同步成功,则返回true。对于分块传输类型的数据,预期返回false。 866 867**系统能力:** SystemCapability.Web.Webview.Core 868 869**起始版本:** 12 870 871 872**参数:** 873 874| 参数项 | 描述 | 875| -- | -- | 876| const [ArkWeb_HttpBodyStream](capi-web-arkweb-httpbodystream.md)* httpBodyStream | ArkWeb_HttpBodyStream。 | 877 878**返回:** 879 880| 类型 | 说明 | 881| -- | -- | 882| bool | 如果上传数据完全在内存中则返回true;否则返回false。 | 883 884### OH_ArkWebResourceRequest_Destroy() 885 886``` 887int32_t OH_ArkWebResourceRequest_Destroy(const ArkWeb_ResourceRequest* resourceRequest) 888``` 889 890**描述:** 891 892销毁ArkWeb_ResourceRequest对象。 893 894**系统能力:** SystemCapability.Web.Webview.Core 895 896**起始版本:** 12 897 898 899**参数:** 900 901| 参数项 | 描述 | 902| -- | -- | 903| const [ArkWeb_ResourceRequest](capi-web-arkweb-resourcerequest.md)* resourceRequest | ArkWeb_ResourceRequest。 | 904 905**返回:** 906 907| 类型 | 说明 | 908| -- | -- | 909| int32_t | 如果返回0,表示成功;返回17100101,表示参数无效。 | 910 911### OH_ArkWebResourceRequest_GetReferrer() 912 913``` 914void OH_ArkWebResourceRequest_GetReferrer(const ArkWeb_ResourceRequest* resourceRequest, char** referrer) 915``` 916 917**描述:** 918 919获取请求的Referrer。 920 921**系统能力:** SystemCapability.Web.Webview.Core 922 923**起始版本:** 12 924 925 926**参数:** 927 928| 参数项 | 描述 | 929| -- | -- | 930| const [ArkWeb_ResourceRequest](capi-web-arkweb-resourcerequest.md)* resourceRequest | ArkWeb_ResourceRequest。 | 931| char** referrer | 请求的Referrer。此函数将为referrer字符串分配内存,调用者必须使用 OH_ArkWeb_ReleaseString 释放该字符串。 | 932 933### OH_ArkWebResourceRequest_GetRequestHeaders() 934 935``` 936void OH_ArkWebResourceRequest_GetRequestHeaders(const ArkWeb_ResourceRequest* resourceRequest,ArkWeb_RequestHeaderList** requestHeaderList) 937``` 938 939**描述:** 940 941获取请求的请求头列表OH_ArkWeb_RequestHeaderList。 942 943**系统能力:** SystemCapability.Web.Webview.Core 944 945**起始版本:** 12 946 947 948**参数:** 949 950| 参数项 | 描述 | 951| -- | -- | 952| const [ArkWeb_ResourceRequest](capi-web-arkweb-resourcerequest.md)* resourceRequest | ArkWeb_ResourceRequest。 | 953| [ArkWeb_RequestHeaderList](capi-web-arkweb-requestheaderlist.md)** requestHeaderList | 请求的请求头列表。 | 954 955### OH_ArkWebResourceRequest_IsRedirect() 956 957``` 958bool OH_ArkWebResourceRequest_IsRedirect(const ArkWeb_ResourceRequest* resourceRequest) 959``` 960 961**描述:** 962 963判断这是否是一个重定向请求。 964 965**系统能力:** SystemCapability.Web.Webview.Core 966 967**起始版本:** 12 968 969 970**参数:** 971 972| 参数项 | 描述 | 973| -- | -- | 974| const [ArkWeb_ResourceRequest](capi-web-arkweb-resourcerequest.md)* resourceRequest | ArkWeb_ResourceRequest。 | 975 976**返回:** 977 978| 类型 | 说明 | 979| -- | -- | 980| bool | 如果这是一个重定向,则返回true;否则返回false。 | 981 982### OH_ArkWebResourceRequest_IsMainFrame() 983 984``` 985bool OH_ArkWebResourceRequest_IsMainFrame(const ArkWeb_ResourceRequest* resourceRequest) 986``` 987 988**描述:** 989 990判断这是否是主框架文档资源的请求。 991 992**系统能力:** SystemCapability.Web.Webview.Core 993 994**起始版本:** 12 995 996 997**参数:** 998 999| 参数项 | 描述 | 1000| -- | -- | 1001| const [ArkWeb_ResourceRequest](capi-web-arkweb-resourcerequest.md)* resourceRequest | ArkWeb_ResourceRequest。 | 1002 1003**返回:** 1004 1005| 类型 | 说明 | 1006| -- | -- | 1007| bool | 如果这是来自主框架,则返回true;否则返回false。 | 1008 1009### OH_ArkWebResourceRequest_HasGesture() 1010 1011``` 1012bool OH_ArkWebResourceRequest_HasGesture(const ArkWeb_ResourceRequest* resourceRequest) 1013``` 1014 1015**描述:** 1016 1017判断这是否是一个由用户手势触发的请求。 1018 1019**系统能力:** SystemCapability.Web.Webview.Core 1020 1021**起始版本:** 12 1022 1023 1024**参数:** 1025 1026| 参数项 | 描述 | 1027| -- | -- | 1028| const [ArkWeb_ResourceRequest](capi-web-arkweb-resourcerequest.md)* resourceRequest | ArkWeb_ResourceRequest。 | 1029 1030**返回:** 1031 1032| 类型 | 说明 | 1033| -- | -- | 1034| bool | 如果这是由用户手势触发的,则返回true;否则返回false。 | 1035 1036### OH_ArkWeb_RegisterCustomSchemes() 1037 1038``` 1039int32_t OH_ArkWeb_RegisterCustomSchemes(const char* scheme, int32_t option) 1040``` 1041 1042**描述:** 1043 1044将custom scheme注册到ArkWeb。对于内置的HTTP、HTTPS、FILE、FTP、ABOUT和DATA协议,不应调用此函数。此函数应在主线程上调用并且需要在内核初始化之前调用。 1045 1046**系统能力:** SystemCapability.Web.Webview.Core 1047 1048**起始版本:** 12 1049 1050 1051**参数:** 1052 1053| 参数项 | 描述 | 1054| -- | -- | 1055| const char* scheme | 待注册的scheme。 | 1056| int32_t option | scheme的配置(行为)。 | 1057 1058**返回:** 1059 1060| 类型 | 说明 | 1061| -- | -- | 1062| int32_t | 如果返回0,表示成功;返回17100100,表示未知错误;返回17100101,表示参数无效;返回17100102,表示注册scheme的配置失败,应该在创建ArkWeb之前注册。 | 1063 1064### OH_ArkWebServiceWorker_SetSchemeHandler() 1065 1066``` 1067bool OH_ArkWebServiceWorker_SetSchemeHandler(const char* scheme, ArkWeb_SchemeHandler* schemeHandler) 1068``` 1069 1070**描述:** 1071 1072为指定scheme设置一个ArkWeb_SchemeHandler以拦截ServiceWorker触发的该scheme类型的请求。应该在创建BrowserContext之后设置SchemeHandler。 1073 1074可以使用WebviewController.initializeWebEngine来初始化BrowserContext而无需创建ArkWeb。 1075 1076**系统能力:** SystemCapability.Web.Webview.Core 1077 1078**起始版本:** 12 1079 1080 1081**参数:** 1082 1083| 参数项 | 描述 | 1084| -- | -- | 1085| const char* scheme | 需要被拦截的scheme。 | 1086| [ArkWeb_SchemeHandler](capi-web-arkweb-schemehandler.md)* schemeHandler | 该scheme的拦截器ArkWeb_SchemeHandler。只有通过ServiceWorker触发的请求才会通过这个schemeHandler进行通知。 | 1087 1088**返回:** 1089 1090| 类型 | 说明 | 1091| -- | -- | 1092| bool | 如果为指定scheme设置SchemeHandler成功,则返回true,否则返回false。 | 1093 1094### OH_ArkWeb_SetSchemeHandler() 1095 1096``` 1097bool OH_ArkWeb_SetSchemeHandler(const char* scheme, const char* webTag, ArkWeb_SchemeHandler* schemeHandler) 1098``` 1099 1100**描述:** 1101 1102为指定scheme设置一个ArkWeb_SchemeHandler以拦截该scheme类型的请求。应该在创建BrowserContext之后设置SchemeHandler。 1103 1104可以使用WebviewController.initializeWebEngine来初始化BrowserContext而无需创建ArkWeb。 1105 1106**系统能力:** SystemCapability.Web.Webview.Core 1107 1108**起始版本:** 12 1109 1110 1111**参数:** 1112 1113| 参数项 | 描述 | 1114| -- | -- | 1115| const char* scheme | 需要被拦截的scheme。 | 1116| const char* webTag | Web组件的标签名称,用于标识某个唯一组件,由开发者来保证名称唯一性。 | 1117| [ArkWeb_SchemeHandler](capi-web-arkweb-schemehandler.md)* schemeHandler | 该scheme的拦截器ArkWeb_SchemeHandler。只有从指定web触发的请求才会通过这个schemeHandler进行通知。 | 1118 1119**返回:** 1120 1121| 类型 | 说明 | 1122| -- | -- | 1123| bool | 如果为指定scheme设置SchemeHandler成功,则返回true,否则返回false。 | 1124 1125### OH_ArkWebServiceWorker_ClearSchemeHandlers() 1126 1127``` 1128int32_t OH_ArkWebServiceWorker_ClearSchemeHandlers() 1129``` 1130 1131**描述:** 1132 1133清除为ServiceWorker注册的SchemeHandler。 1134 1135**系统能力:** SystemCapability.Web.Webview.Core 1136 1137**起始版本:** 12 1138 1139**返回:** 1140 1141| 类型 | 说明 | 1142| -- | -- | 1143| int32_t | 如果返回0,表示成功。 | 1144 1145### OH_ArkWeb_ClearSchemeHandlers() 1146 1147``` 1148int32_t OH_ArkWeb_ClearSchemeHandlers(const char* webTag) 1149``` 1150 1151**描述:** 1152 1153清除为指定web注册的SchemeHandler。 1154 1155**系统能力:** SystemCapability.Web.Webview.Core 1156 1157**起始版本:** 12 1158 1159 1160**参数:** 1161 1162| 参数项 | 描述 | 1163| -- | -- | 1164| const char* webTag | Web组件的标签名称,用于标识某个唯一组件,由开发者来保证名称唯一性。 | 1165 1166**返回:** 1167 1168| 类型 | 说明 | 1169| -- | -- | 1170| int32_t | 如果返回0,表示成功;返回17100101,表示参数无效。 | 1171 1172### OH_ArkWeb_CreateSchemeHandler() 1173 1174``` 1175void OH_ArkWeb_CreateSchemeHandler(ArkWeb_SchemeHandler** schemeHandler) 1176``` 1177 1178**描述:** 1179 1180创建一个ArkWeb_SchemeHandler对象。 1181 1182**系统能力:** SystemCapability.Web.Webview.Core 1183 1184**起始版本:** 12 1185 1186 1187**参数:** 1188 1189| 参数项 | 描述 | 1190| -- | -- | 1191| [ArkWeb_SchemeHandler](capi-web-arkweb-schemehandler.md)** schemeHandler | 返回创建的ArkWeb_SchemeHandler。在不需要时使用OH_ArkWeb_DestoryschemeHandler销毁它。 | 1192 1193### OH_ArkWeb_DestroySchemeHandler() 1194 1195``` 1196void OH_ArkWeb_DestroySchemeHandler(ArkWeb_SchemeHandler* schemeHandler) 1197``` 1198 1199**描述:** 1200 1201销毁一个ArkWeb_SchemeHandler对象。 1202 1203**系统能力:** SystemCapability.Web.Webview.Core 1204 1205**起始版本:** 12 1206 1207 1208**参数:** 1209 1210| 参数项 | 描述 | 1211| -- | -- | 1212| [ArkWeb_SchemeHandler](capi-web-arkweb-schemehandler.md)* schemeHandler | 待销毁的ArkWeb_SchemeHandler。 | 1213 1214### OH_ArkWebSchemeHandler_SetUserData() 1215 1216``` 1217int32_t OH_ArkWebSchemeHandler_SetUserData(ArkWeb_SchemeHandler* schemeHandler, void* userData) 1218``` 1219 1220**描述:** 1221 1222将一个用户数据设置到ArkWeb_SchemeHandler对象中。 1223 1224**系统能力:** SystemCapability.Web.Webview.Core 1225 1226**起始版本:** 12 1227 1228 1229**参数:** 1230 1231| 参数项 | 描述 | 1232| -- | -- | 1233| [ArkWeb_SchemeHandler](capi-web-arkweb-schemehandler.md)* schemeHandler | ArkWeb_SchemeHandler。 | 1234| void* userData | 要设置的用户数据。 | 1235 1236**返回:** 1237 1238| 类型 | 说明 | 1239| -- | -- | 1240| int32_t | 如果返回0,表示成功;返回17100101,表示参数无效。 | 1241 1242### OH_ArkWebSchemeHandler_GetUserData() 1243 1244``` 1245void* OH_ArkWebSchemeHandler_GetUserData(const ArkWeb_SchemeHandler* schemeHandler) 1246``` 1247 1248**描述:** 1249 1250从ArkWeb_SchemeHandler获取用户数据。 1251 1252**系统能力:** SystemCapability.Web.Webview.Core 1253 1254**起始版本:** 12 1255 1256 1257**参数:** 1258 1259| 参数项 | 描述 | 1260| -- | -- | 1261| const [ArkWeb_SchemeHandler](capi-web-arkweb-schemehandler.md)* schemeHandler | ArkWeb_SchemeHandler。 | 1262 1263**返回:** 1264 1265| 类型 | 说明 | 1266| -- | -- | 1267| void* | 设置的用户数据。 | 1268 1269### OH_ArkWebSchemeHandler_SetOnRequestStart() 1270 1271``` 1272int32_t OH_ArkWebSchemeHandler_SetOnRequestStart(ArkWeb_SchemeHandler* schemeHandler,ArkWeb_OnRequestStart onRequestStart) 1273``` 1274 1275**描述:** 1276 1277为SchemeHandler设置OnRequestStart回调。 1278 1279**系统能力:** SystemCapability.Web.Webview.Core 1280 1281**起始版本:** 12 1282 1283 1284**参数:** 1285 1286| 参数项 | 描述 | 1287| -- | -- | 1288| [ArkWeb_SchemeHandler](capi-web-arkweb-schemehandler.md)* schemeHandler | 该scheme的SchemeHandler。 | 1289| [ArkWeb_OnRequestStart](#arkweb_onrequeststart) onRequestStart | OnRequestStart回调函数。 | 1290 1291**返回:** 1292 1293| 类型 | 说明 | 1294| -- | -- | 1295| int32_t | 如果返回0,表示成功;返回17100101,表示参数无效。 | 1296 1297### OH_ArkWebSchemeHandler_SetOnRequestStop() 1298 1299``` 1300int32_t OH_ArkWebSchemeHandler_SetOnRequestStop(ArkWeb_SchemeHandler* schemeHandler,ArkWeb_OnRequestStop onRequestStop) 1301``` 1302 1303**描述:** 1304 1305为SchemeHandler设置OnRequestStop回调。 1306 1307**系统能力:** SystemCapability.Web.Webview.Core 1308 1309**起始版本:** 12 1310 1311 1312**参数:** 1313 1314| 参数项 | 描述 | 1315| -- | -- | 1316| [ArkWeb_SchemeHandler](capi-web-arkweb-schemehandler.md)* schemeHandler | 该scheme的SchemeHandler。 | 1317| [ArkWeb_OnRequestStop](#arkweb_onrequeststop) onRequestStop | OnRequestStop回调函数。 | 1318 1319**返回:** 1320 1321| 类型 | 说明 | 1322| -- | -- | 1323| int32_t | 如果返回0,表示成功;返回17100101,表示参数无效。 | 1324 1325### OH_ArkWeb_CreateResponse() 1326 1327``` 1328void OH_ArkWeb_CreateResponse(ArkWeb_Response** response) 1329``` 1330 1331**描述:** 1332 1333为被拦截的请求创建一个ArkWeb_Response对象。 1334 1335**系统能力:** SystemCapability.Web.Webview.Core 1336 1337**起始版本:** 12 1338 1339 1340**参数:** 1341 1342| 参数项 | 描述 | 1343| -- | -- | 1344| [ArkWeb_Response](capi-web-arkweb-response.md)** response | 返回创建的ArkWeb_Response。在不需要时使用OH_ArkWeb_DestoryResponse进行销毁。 | 1345 1346### OH_ArkWeb_DestroyResponse() 1347 1348``` 1349void OH_ArkWeb_DestroyResponse(ArkWeb_Response* response) 1350``` 1351 1352**描述:** 1353 1354销毁一个ArkWeb_Response对象。 1355 1356**系统能力:** SystemCapability.Web.Webview.Core 1357 1358**起始版本:** 12 1359 1360**参数:** 1361 1362| 参数项 | 描述 | 1363| -- | -- | 1364| [ArkWeb_Response](capi-web-arkweb-response.md)* response | 待销毁的ArkWeb_Response。 | 1365 1366### OH_ArkWebResponse_SetUrl() 1367 1368``` 1369int32_t OH_ArkWebResponse_SetUrl(ArkWeb_Response* response, const char* url) 1370``` 1371 1372**描述:** 1373 1374设置经过重定向或由于HSTS而改变后的解析URL,设置后会触发跳转。 1375 1376**系统能力:** SystemCapability.Web.Webview.Core 1377 1378**起始版本:** 12 1379 1380 1381**参数:** 1382 1383| 参数项 | 描述 | 1384| -- | -- | 1385| [ArkWeb_Response](capi-web-arkweb-response.md)* response | ArkWeb_Response。 | 1386| const char* url | 解析后的URL。 | 1387 1388**返回:** 1389 1390| 类型 | 说明 | 1391| -- | -- | 1392| int32_t | 如果返回0,表示成功;返回17100101,表示参数无效。 | 1393 1394### OH_ArkWebResponse_GetUrl() 1395 1396``` 1397void OH_ArkWebResponse_GetUrl(const ArkWeb_Response* response, char** url) 1398``` 1399 1400**描述:** 1401 1402获取经过重定向或由于HSTS而更改后的解析URL。 1403 1404**系统能力:** SystemCapability.Web.Webview.Core 1405 1406**起始版本:** 12 1407 1408 1409**参数:** 1410 1411| 参数项 | 描述 | 1412| -- | -- | 1413| const [ArkWeb_Response](capi-web-arkweb-response.md)* response | ArkWeb_Response。 | 1414| char** url | 解析后的URL。 | 1415 1416### OH_ArkWebResponse_SetError() 1417 1418``` 1419int32_t OH_ArkWebResponse_SetError(ArkWeb_Response* response, ArkWeb_NetError errorCode) 1420``` 1421 1422**描述:** 1423 1424给ArkWeb_Response对象设置一个错误码。 1425 1426**系统能力:** SystemCapability.Web.Webview.Core 1427 1428**起始版本:** 12 1429 1430 1431**参数:** 1432 1433| 参数项 | 描述 | 1434| -- | -- | 1435| [ArkWeb_Response](capi-web-arkweb-response.md)* response | ArkWeb_Response。 | 1436| [ArkWeb_NetError](capi-arkweb-net-error-list-h.md#arkweb_neterror) errorCode | 失败请求的错误码。 | 1437 1438**返回:** 1439 1440| 类型 | 说明 | 1441| -- | -- | 1442| int32_t | 如果返回0,表示成功;返回17100101,表示参数无效。 | 1443 1444### OH_ArkWebResponse_GetError() 1445 1446``` 1447ArkWeb_NetError OH_ArkWebResponse_GetError(const ArkWeb_Response* response) 1448``` 1449 1450**描述:** 1451 1452获取ArkWeb_Response的错误码。 1453 1454**系统能力:** SystemCapability.Web.Webview.Core 1455 1456**起始版本:** 12 1457 1458 1459**参数:** 1460 1461| 参数项 | 描述 | 1462|-------------------------------------| -- | 1463| const [ArkWeb_Response](capi-web-arkweb-response.md)* response | ArkWeb_Response。 | 1464 1465**返回:** 1466 1467| 类型 | 说明 | 1468| -- | -- | 1469| [ArkWeb_NetError](capi-arkweb-net-error-list-h.md#arkweb_neterror) | ArkWeb_Response的错误码。 | 1470 1471### OH_ArkWebResponse_SetStatus() 1472 1473``` 1474int32_t OH_ArkWebResponse_SetStatus(ArkWeb_Response* response, int status) 1475``` 1476 1477**描述:** 1478 1479为ArkWeb_Response对象设置一个HTTP状态码。 1480 1481**系统能力:** SystemCapability.Web.Webview.Core 1482 1483**起始版本:** 12 1484 1485 1486**参数:** 1487 1488| 参数项 | 描述 | 1489| -- | -- | 1490| [ArkWeb_Response](capi-web-arkweb-response.md)* response | ArkWeb_Response。 | 1491| int status | 请求的HTTP状态码。 | 1492 1493**返回:** 1494 1495| 类型 | 说明 | 1496| -- | -- | 1497| int32_t | 如果返回0,表示成功;返回17100101,表示参数无效。 | 1498 1499### OH_ArkWebResponse_GetStatus() 1500 1501``` 1502int OH_ArkWebResponse_GetStatus(const ArkWeb_Response* response) 1503``` 1504 1505**描述:** 1506 1507获取ArkWeb_Response的HTTP状态码。 1508 1509**系统能力:** SystemCapability.Web.Webview.Core 1510 1511**起始版本:** 12 1512 1513 1514**参数:** 1515 1516| 参数项 | 描述 | 1517|-------------------------------------| -- | 1518| const [ArkWeb_Response](capi-web-arkweb-response.md)* response | ArkWeb_Response。 | 1519 1520**返回:** 1521 1522| 类型 | 说明 | 1523| -- | -- | 1524| int | ArkWeb_Response的HTTP状态码。如果ArkWeb_Response无效,则为-1。 | 1525 1526### OH_ArkWebResponse_SetStatusText() 1527 1528``` 1529int32_t OH_ArkWebResponse_SetStatusText(ArkWeb_Response* response, const char* statusText) 1530``` 1531 1532**描述:** 1533 1534为ArkWeb_Response设置状态文本。 1535 1536**系统能力:** SystemCapability.Web.Webview.Core 1537 1538**起始版本:** 12 1539 1540 1541**参数:** 1542 1543| 参数项 | 描述 | 1544| -- | -- | 1545| [ArkWeb_Response](capi-web-arkweb-response.md)* response | ArkWeb_Response。 | 1546| const char* statusText | 请求的状态文本。 | 1547 1548**返回:** 1549 1550| 类型 | 说明 | 1551| -- | -- | 1552| int32_t | 如果返回0,表示成功;返回17100101,表示参数无效。 | 1553 1554### OH_ArkWebResponse_GetStatusText() 1555 1556``` 1557void OH_ArkWebResponse_GetStatusText(const ArkWeb_Response* response, char** statusText) 1558``` 1559 1560**描述:** 1561 1562获取ArkWeb_Response的状态文本。 1563 1564**系统能力:** SystemCapability.Web.Webview.Core 1565 1566**起始版本:** 12 1567 1568 1569**参数:** 1570 1571| 参数项 | 描述 | 1572| -- | -- | 1573| const [ArkWeb_Response](capi-web-arkweb-response.md)* response | ArkWeb_Response。 | 1574| char** statusText | 返回ArkWeb_Response的状态文本。此函数将为statusText字符串分配内存,调用方必须通过OH_ArkWeb_ReleaseString释放该字符串。 | 1575 1576### OH_ArkWebResponse_SetMimeType() 1577 1578``` 1579int32_t OH_ArkWebResponse_SetMimeType(ArkWeb_Response* response, const char* mimeType) 1580``` 1581 1582**描述:** 1583 1584为ArkWeb_Response设置媒体类型。 1585 1586**系统能力:** SystemCapability.Web.Webview.Core 1587 1588**起始版本:** 12 1589 1590 1591**参数:** 1592 1593| 参数项 | 描述 | 1594| -- | -- | 1595| [ArkWeb_Response](capi-web-arkweb-response.md)* response | ArkWeb_Response。 | 1596| const char* mimeType | 请求的媒体类型。 | 1597 1598**返回:** 1599 1600| 类型 | 说明 | 1601| -- | -- | 1602| int32_t | 如果返回0,表示成功;返回17100101,表示参数无效。 | 1603 1604### OH_ArkWebResponse_GetMimeType() 1605 1606``` 1607void OH_ArkWebResponse_GetMimeType(const ArkWeb_Response* response, char** mimeType) 1608``` 1609 1610**描述:** 1611 1612获取ArkWeb_Response的媒体类型。 1613 1614**系统能力:** SystemCapability.Web.Webview.Core 1615 1616**起始版本:** 12 1617 1618 1619**参数:** 1620 1621| 参数项 | 描述 | 1622| -- | -- | 1623| const [ArkWeb_Response](capi-web-arkweb-response.md)* response | ArkWeb_Response。 | 1624| char** mimeType | 返回ArkWeb_Response的媒体类型。此函数将为mimeType字符串分配内存,调用方必须通过OH_ArkWeb_ReleaseString释放该字符串。 | 1625 1626### OH_ArkWebResponse_SetCharset() 1627 1628``` 1629int32_t OH_ArkWebResponse_SetCharset(ArkWeb_Response* response, const char* charset) 1630``` 1631 1632**描述:** 1633 1634为ArkWeb_Response设置字符集。 1635 1636**系统能力:** SystemCapability.Web.Webview.Core 1637 1638**起始版本:** 12 1639 1640 1641**参数:** 1642 1643| 参数项 | 描述 | 1644| -- | -- | 1645| [ArkWeb_Response](capi-web-arkweb-response.md)* response | ArkWeb_Response。 | 1646| const char* charset | 请求的字符集。 | 1647 1648**返回:** 1649 1650| 类型 | 说明 | 1651| -- | -- | 1652| int32_t | 如果返回0,表示成功;返回17100101,表示参数无效。 | 1653 1654### OH_ArkWebResponse_GetCharset() 1655 1656``` 1657void OH_ArkWebResponse_GetCharset(const ArkWeb_Response* response, char** charset) 1658``` 1659 1660**描述:** 1661 1662获取ArkWeb_Response的字符集。 1663 1664**系统能力:** SystemCapability.Web.Webview.Core 1665 1666**起始版本:** 12 1667 1668 1669**参数:** 1670 1671| 参数项 | 描述 | 1672| -- | -- | 1673| const [ArkWeb_Response](capi-web-arkweb-response.md)* response | ArkWeb_Response。 | 1674| char** charset | 返回ArkWeb_Response的字符集。此函数将为charset字符串分配内存,调用方必须通过OH_ArkWeb_ReleaseString释放字符串。 | 1675 1676### OH_ArkWebResponse_SetHeaderByName() 1677 1678``` 1679int32_t OH_ArkWebResponse_SetHeaderByName(ArkWeb_Response* response,const char* name,const char* value,bool overwrite) 1680``` 1681 1682**描述:** 1683 1684为ArkWeb_Response设置一个header。 1685 1686**系统能力:** SystemCapability.Web.Webview.Core 1687 1688**起始版本:** 12 1689 1690 1691**参数:** 1692 1693| 参数项 | 描述 | 1694| -- | -- | 1695| [ArkWeb_Response](capi-web-arkweb-response.md)* response | ArkWeb_Response。 | 1696| const char* name | header的名称。 | 1697| const char* value | header的值。 | 1698| bool overwrite | 如果为true,将覆盖现有的header,否则不覆盖。 | 1699 1700**返回:** 1701 1702| 类型 | 说明 | 1703| -- | -- | 1704| int32_t | 如果返回0,表示成功;返回17100101,表示参数无效。 | 1705 1706### OH_ArkWebResponse_GetHeaderByName() 1707 1708``` 1709void OH_ArkWebResponse_GetHeaderByName(const ArkWeb_Response* response, const char* name, char** value) 1710``` 1711 1712**描述:** 1713 1714从ArkWeb_Response中获取header。 1715 1716**系统能力:** SystemCapability.Web.Webview.Core 1717 1718**起始版本:** 12 1719 1720 1721**参数:** 1722 1723| 参数项 | 描述 | 1724| -- | -- | 1725| const [ArkWeb_Response](capi-web-arkweb-response.md)* response | ArkWeb_Response。 | 1726| const char* name | header的名称。 | 1727| char** value | 返回header的值。此函数将为value字符串分配内存,调用方必须通过OH_ArkWeb_ReleaseString释放该字符串。 | 1728 1729### OH_ArkWebResourceHandler_Destroy() 1730 1731``` 1732int32_t OH_ArkWebResourceHandler_Destroy(const ArkWeb_ResourceHandler* resourceHandler) 1733``` 1734 1735**描述:** 1736 1737销毁一个ArkWeb_ResourceHandler对象。 1738 1739**系统能力:** SystemCapability.Web.Webview.Core 1740 1741**起始版本:** 12 1742 1743 1744**参数:** 1745 1746| 参数项 | 描述 | 1747|---------------------------------------------------| -- | 1748| const [ArkWeb_ResourceHandler](capi-web-arkweb-resourcehandler.md)* resourceHandler | ArkWeb_ResourceHandler。 | 1749 1750**返回:** 1751 1752| 类型 | 说明 | 1753| -- | -- | 1754| int32_t | 如果返回0,表示成功;返回17100101,表示参数无效。 | 1755 1756### OH_ArkWebResourceHandler_DidReceiveResponse() 1757 1758``` 1759int32_t OH_ArkWebResourceHandler_DidReceiveResponse(const ArkWeb_ResourceHandler* resourceHandler,const ArkWeb_Response* response) 1760``` 1761 1762**描述:** 1763 1764将构造的响应头传递给被拦截的请求。 1765 1766**系统能力:** SystemCapability.Web.Webview.Core 1767 1768**起始版本:** 12 1769 1770 1771**参数:** 1772 1773| 参数项 | 描述 | 1774| -- | -- | 1775| const [ArkWeb_ResourceHandler](capi-web-arkweb-resourcehandler.md)* resourceHandler | 该请求的ArkWeb_ResourceHandler。 | 1776| const [ArkWeb_Response](capi-web-arkweb-response.md)* response | 该拦截请求的ArkWeb_Response。 | 1777 1778**返回:** 1779 1780| 类型 | 说明 | 1781| -- | -- | 1782| int32_t | 如果返回0,表示成功;返回17100101,表示参数无效。 | 1783 1784### OH_ArkWebResourceHandler_DidReceiveData() 1785 1786``` 1787int32_t OH_ArkWebResourceHandler_DidReceiveData(const ArkWeb_ResourceHandler* resourceHandler,const uint8_t* buffer,int64_t bufLen) 1788``` 1789 1790**描述:** 1791 1792将构造的响应体传递给被拦截的请求。 1793 1794**系统能力:** SystemCapability.Web.Webview.Core 1795 1796**起始版本:** 12 1797 1798 1799**参数:** 1800 1801| 参数项 | 描述 | 1802| -- | -- | 1803| const [ArkWeb_ResourceHandler](capi-web-arkweb-resourcehandler.md)* resourceHandler | 该请求的ArkWeb_ResourceHandler。 | 1804| const uint8_t* buffer | 要发送的buffer数据。 | 1805| int64_t bufLen | buffer的大小。 | 1806 1807**返回:** 1808 1809| 类型 | 说明 | 1810| -- | -- | 1811| int32_t | 如果返回0,表示成功;返回17100101,表示参数无效。 | 1812 1813### OH_ArkWebResourceHandler_DidFinish() 1814 1815``` 1816int32_t OH_ArkWebResourceHandler_DidFinish(const ArkWeb_ResourceHandler* resourceHandler) 1817``` 1818 1819**描述:** 1820 1821通知ArkWeb内核被拦截的请求已经完成,并且没有更多的数据可用。 1822 1823**系统能力:** SystemCapability.Web.Webview.Core 1824 1825**起始版本:** 12 1826 1827 1828**参数:** 1829 1830| 参数项 | 描述 | 1831| -- | -- | 1832| const [ArkWeb_ResourceHandler](capi-web-arkweb-resourcehandler.md)* resourceHandler | 该请求的ArkWeb_ResourceHandler。 | 1833 1834**返回:** 1835 1836| 类型 | 说明 | 1837| -- | -- | 1838| int32_t | 如果返回0,表示成功;返回17100101,表示参数无效。 | 1839 1840### OH_ArkWebResourceHandler_DidFailWithError() 1841 1842``` 1843int32_t OH_ArkWebResourceHandler_DidFailWithError(const ArkWeb_ResourceHandler* resourceHandler,ArkWeb_NetError errorCode) 1844``` 1845 1846**描述:** 1847 1848通知ArkWeb内核,被拦截的请求应该失败。 1849 1850**系统能力:** SystemCapability.Web.Webview.Core 1851 1852**起始版本:** 12 1853 1854 1855**参数:** 1856 1857| 参数项 | 描述 | 1858| -- | -- | 1859| const [ArkWeb_ResourceHandler](capi-web-arkweb-resourcehandler.md)* resourceHandler | 用于被拦截的URL请求。可以通过ArkWeb_ResourceHandler发送自定义请求头以及自定义请求体。 | 1860| [ArkWeb_NetError](capi-arkweb-net-error-list-h.md#arkweb_neterror) errorCode | 该请求的错误码。请参考[arkweb_net_error_list.h](capi-arkweb-net-error-list-h.md)。 | 1861 1862**返回:** 1863 1864| 类型 | 说明 | 1865| -- | -- | 1866| int32_t | 如果返回0,表示成功;返回17100101,表示参数无效。 | 1867 1868### OH_ArkWebResourceHandler_DidFailWithErrorV2() 1869 1870``` 1871int32_t OH_ArkWebResourceHandler_DidFailWithErrorV2(const ArkWeb_ResourceHandler* resourceHandler,ArkWeb_NetError errorCode,bool completeIfNoResponse) 1872``` 1873 1874**描述:** 1875 1876通知ArkWeb内核,被拦截的请求应该失败。对比[OH_ArkWebResourceHandler_DidFailWithError](#oh_arkwebresourcehandler_didfailwitherror)接口,新增参数completeIfNoResponse,值为true时,若之前未调用过[OH_ArkWebResourceHandler_DidReceiveResponse](#oh_arkwebresourcehandler_didreceiveresponse),则会自动生成一个response以完成此次网络请求,网络错误码为-104;值为false时,将等待应用调用[OH_ArkWebResourceHandler_DidReceiveResponse](#oh_arkwebresourcehandler_didreceiveresponse)并传入response,不会直接完成此次网络请求。 1877 1878**系统能力:** SystemCapability.Web.Webview.Core 1879 1880**起始版本:** 20 1881 1882 1883**参数:** 1884 1885| 参数项 | 描述 | 1886| -- | -- | 1887| const [ArkWeb_ResourceHandler](capi-web-arkweb-resourcehandler.md)* resourceHandler | 用于被拦截的URL请求。可以通过ArkWeb_ResourceHandler发送自定义请求头以及自定义请求体。 | 1888| [ArkWeb_NetError](capi-arkweb-net-error-list-h.md#arkweb_neterror) errorCode | 该请求的错误码。请参考[arkweb_net_error_list.h](capi-arkweb-net-error-list-h.md)。 | 1889| bool completeIfNoResponse | 若之前未调用过[OH_ArkWebResourceHandler_DidReceiveResponse](#oh_arkwebresourcehandler_didreceiveresponse),调用[OH_ArkWebResourceHandler_DidFailWithErrorV2](#oh_arkwebresourcehandler_didfailwitherrorv2)时,此次网络请求是否完成;值为true时,若之前未调用过[OH_ArkWebResourceHandler_DidReceiveResponse](#oh_arkwebresourcehandler_didreceiveresponse),则会自动生成一个response以完成此次网络请求,网络错误码为-104;值为false时,将等待应用调用[OH_ArkWebResourceHandler_DidReceiveResponse](#oh_arkwebresourcehandler_didreceiveresponse)并传入response,不会直接完成此次网络请求。 | 1890 1891**返回:** 1892 1893| 类型 | 说明 | 1894| -- | -- | 1895| int32_t | 如果返回0,表示成功;返回17100101,表示参数无效。 | 1896 1897### OH_ArkWeb_ReleaseString() 1898 1899``` 1900void OH_ArkWeb_ReleaseString(char* string) 1901``` 1902 1903**描述:** 1904 1905释放由NDK接口创建的字符串。 1906 1907**系统能力:** SystemCapability.Web.Webview.Core 1908 1909**起始版本:** 12 1910 1911 1912**参数:** 1913 1914| 参数项 | 描述 | 1915| -- | -- | 1916| char* string | 待释放的字符串。 | 1917 1918### OH_ArkWeb_ReleaseByteArray() 1919 1920``` 1921void OH_ArkWeb_ReleaseByteArray(uint8_t* byteArray) 1922``` 1923 1924**描述:** 1925 1926释放由NDK接口创建的字节数组。 1927 1928**系统能力:** SystemCapability.Web.Webview.Core 1929 1930**起始版本:** 12 1931 1932 1933**参数:** 1934 1935| 参数项 | 描述 | 1936| -- | -- | 1937| uint8_t* byteArray | 待释放的字节数组。 | 1938 1939 1940