# Web Subsystem Changelog Compared with earlier versions, OpenHarmony 4.0.7.3 has the following API changes in its web subsystem: ## cl.web.1 New Input Parameter Type of the setResponseData API Added the input parameter type **Resource** for the **setResponseData** API. **Change Impact** In the scenario where a HAP file is not decompressed, the file path in the HAP does not exist. Under this scenario, to access resources in the HAP file, you must use the input parameter **data:Resource** instead of **data:number**. **Key API/Component Changes** - Involved APIs: setResponseData - Before change: ``` setResponseData(data: string | number) ``` - After change: ``` setResponseData(data: string | number | Resource) ``` **Adaptation Guide** When a HAP file is decompressed, open the hold the FD of the target resource file, and then transfer the resource response data to the kernel through **setResponseData(data:number)**. ``` // xxx.ets import web_webview from '@ohos.web.webview' import fileio from '@ohos.fileio'; @Entry @Component struct WebComponent { controller: web_webview.WebviewController = new web_webview.WebviewController() responseweb: WebResourceResponse = new WebResourceResponse() heads: Header[] = new Array() build() { Column() { Web({ src: 'www.example.com', controller: this.controller }) .onInterceptRequest((event) => { console.log('url:' + event.request.getRequestUrl()) var head1:Header = { headerKey:"Connection", headerValue:"keep-alive" } var head2:Header = { headerKey:"Cache-Control", headerValue:"no-cache" } var length = this.heads.push(head1) length = this.heads.push(head2) this.responseweb.setResponseHeader(this.heads) this.responseweb.setResponseEncoding('utf-8') this.responseweb.setResponseMimeType('text/html') this.responseweb.setResponseCode(200) this.responseweb.setReasonMessage('OK') //// fd scheme --start // '/xxx/.../test.html' is the local path of the file. // @ts-ignore let fd = fileio.openSync('/xxx/.../test.html', 0o102, 0o666) this.responseweb.setResponseData(fd) //// fd scheme --end return this.responseweb }) } } } ``` When a HAP file is decompressed, the file path in the HAP does not exist. In this case, transfer the resource response data to the kernel through **setResponseData(data:Resource)**. ``` // xxx.ets import web_webview from '@ohos.web.webview' @Entry @Component struct WebComponent { controller: web_webview.WebviewController = new web_webview.WebviewController() responseweb: WebResourceResponse = new WebResourceResponse() heads: Header[] = new Array() build() { Column() { Web({ src: 'www.example.com', controller: this.controller }) .onInterceptRequest((event) => { console.log('url:' + event.request.getRequestUrl()) var head1:Header = { headerKey:"Connection", headerValue:"keep-alive" } var head2:Header = { headerKey:"Cache-Control", headerValue:"no-cache" } var length = this.heads.push(head1) length = this.heads.push(head2) this.responseweb.setResponseHeader(this.heads) this.responseweb.setResponseEncoding('utf-8') this.responseweb.setResponseMimeType('text/html') this.responseweb.setResponseCode(200) this.responseweb.setReasonMessage('OK') //// Resource scheme --start // Specify the target file in the rawfile directory of the HAP file. this.responseweb.setResponseData($rawfile('test.html')) //// Resource scheme --end return this.responseweb }) } } } ```