@ohos.net.http (Data Request)
The http module provides APIs for implementing HTTP data request capabilities. An application can initiate a data request over HTTP. Common HTTP methods include GET, POST, OPTIONS, HEAD, PUT, DELETE, PATCH, TRACE, and CONNECT.
NOTE
The initial APIs of this module are supported since API version 6. Newly added APIs will be marked with a superscript to indicate their earliest API version.
Modules to Import
import { http } from '@kit.NetworkKit';
Example
NOTE
In the sample code provided in this topic, this.context is used to obtain UIAbilityContext, where this indicates a UIAbility instance inherited from UIAbility. To use UIAbilityContext APIs on pages, see Obtaining the Context of UIAbility.
// Import the http namespace.
import { http } from '@kit.NetworkKit';
import { BusinessError } from '@kit.BasicServicesKit';
import { common } from '@kit.AbilityKit';
let context: common.UIAbilityContext = this.getUIContext().getHostContext() as common.UIAbilityContext;
// Each httpRequest corresponds to an HTTP request task and cannot be reused.
let httpRequest = http.createHttp();
// This API is used to listen for HTTP Response Header events, which is returned earlier than the result of the HTTP request. It is up to you whether to listen for HTTP response header events.
// on('headerReceive', AsyncCallback) is replaced by on('headersReceive', Callback) since API version 8.
httpRequest.on('headersReceive', (header: Object) => {
console.info('header: ' + JSON.stringify(header));
});
httpRequest.request(// Enter the URL of the HTTP request. The URL can contain parameters or not. The URL needs to be customized.
"EXAMPLE_URL",
{
method: http.RequestMethod.POST, // Optional. The default value is http.RequestMethod.GET.
// You are advised to use the body field to transfer the request body content. The specific format needs to be negotiated with the server.
body: 'data to send', // Supported since API version 26.
// You are advised to use the queryParams field to transfer URL parameters. The value can be a string or an object.
queryParams: { scene: 'demo', tag: ['a', 'b'] }, // Supported since API version 26.
expectDataType: http.HttpDataType.STRING, // Optional. This parameter specifies the type of the return data.
usingCache: true, // Optional. The default value is true.
priority: 1, // Optional. The default value is 1.
// You can add header fields based on service requirements. Note that map objects cannot be passed to header fields.
header: { 'Accept' : 'application/json' },
readTimeout: 60000, // Optional. The default value is 60000, in ms.
connectTimeout: 60000 // Optional. The default value is 60000, in ms.
usingProtocol: http.HttpProtocol.HTTP1_1, // Optional. The default protocol type is automatically specified by the system.
usingProxy: false, // Optional. By default, network proxy is not used. This field is supported since API version 10.
caPath: '/path/to/cacert.pem', // Optional. The preset CA certificate is used by default. This field is supported since API version 10.
caData: '-----BEGIN CERTIFICATE-----\n' +
'MIIDaTCCAlGgAwIBAgIICN287lmB2cMwDQYJKoZIhvcNAQELBQAwgYoxCzAJBgNV\n' +
'BAYTAkNOMRMwEQYDVQQDDApleGFtcGxlLmNuMRAwDgYDVQQKDAdDb21wYW55MREw\n' +
'DwYDVQQLDAhEaXZpc2lvbjEOMAwGA1UECAwFQW5IdWkxDjAMBgNVBAcMBUhlRmVp\n' +
'MSEwHwYJKoZIhvcNAQkBFhJleGFtcGxlQGV4YW1wbGUuY24wHhcNMjUwNDEzMDAy\n' +
'MjQxWhcNMjgwNDEzMDAyMjQxWjBeMQswCQYDVQQGEwJDTjESMBAGA1UEAwwJMTI3\n' +
'LjAuMC4xMQkwBwYDVQQKDAAxCTAHBgNVBAsMADEJMAcGA1UECAwAMQkwBwYDVQQH\n' +
'DAAxDzANBgkqhkiG9w0BCQEWADCCASIwDQYJKoZIhvcNAQEBBQADggEPADCCAQoC\n' +
'ggEBANN/JrQC8dy7sxUk+TDJlGlq4h8lajdqSASkFbWVBadU4eMCbRrKejXuFX/n\n' +
'Yu4J3wkgni0NKRejdWu/M+LLibQEIF9RUGNR/OgdlR4AKr8ZxmG44+7Ps2aiDcOy\n' +
'Z95UcxYj59ctfFk63cacbBi19aq200spjl/H0jTVsQ2/JvwMVEH62WbyjIJ3KXgq\n' +
'yyjf75rKbR9CdVdGk+OoR4S4c6nY5cTZP6T7iCupYR6MpKEtIR2bbams/N5GxQEh\n' +
'9+7YxswTQn4EkVhi+UOFZolYLhtIdoLThmStN+WiSL5VDvchAkTUmwUBTGV21WnH\n' +
'qo6J1t7XtwUpAZF6OuWl85R8D50CAwEAATANBgkqhkiG9w0BAQsFAAOCAQEAqjKq\n' +
'gwR+4B6bwdAOZ6k0cutLqxvVgBaktX28omuYtoiYagM0zfB8/8WijXL8jT1VLEFx\n' +
'wPaojwegqYWANfQkPd7A6rjsabgOH7oYBCDoCH52cjzGlJunC0BL6w5g3z6MCOB4\n' +
'Ciz8rnYMvYqQJiMqrO7Po9onoFBHiRQGO4Wva3O8ErEmd2dKvXb3vN02P3T7CtwM\n' +
'Z6D0rtZbzdsSOQfGcX08WFIfvfpz6tdU/X/6VqKrt5oiaNQH7ded6gJ3C6RM/Q/x\n' +
'I2j/hSKy0yU7FoCFSOnlhxbm3TlbIvtjZKQ9ymK4x7iE0VKqExUAA6Z8qsIUBUt4\n' +
'aqNDeZWXFBqrSujLJA==\n' +
'-----END CERTIFICATE-----', // Optional. The preset CA certificate is used by default. This field is supported since API version 20.
clientCert: { // Optional. The client certificate is not used by default. This field is supported since API version 11.
certPath: '/path/to/client.pem', // The client certificate is not used by default. This field is supported since API version 11.
keyPath: '/path/to/client.key', // If the certificate contains key information, an empty string is passed. This field is supported since API version 11.
certType: http.CertType.PEM, // Certificate type, optional. A certificate in the PEM format is used by default. This field is supported since API version 11.
keyPassword: "passwordToKey" // Password of the key file, optional. It is supported since API version 11.
},
certificatePinning: [ // Optional. It determines whether to enable dynamic configuration of certificate pinning. This attribute is supported since API version 12.
{
publicKeyHash: 'Pin1', // Certificate PIN passed by the application. This attribute is supported since API version 12.
hashAlgorithm: 'SHA-256' // Encryption algorithm. Currently, it can only be set to SHA-256. This attribute is supported since API version 12.
}, {
publicKeyHash: 'Pin2', // Certificate PIN passed by the application. This attribute is supported since API version 12.
hashAlgorithm: 'SHA-256' // Encryption algorithm. Currently, it can only be set to SHA-256. This attribute is supported since API version 12.
}
],
multiFormDataList: [ // Optional. This field is valid only when content-Type in the header is multipart/form-data. It is supported since API version 11.
{
name: "Part1", // Data name. This field is supported since API version 11.
contentType: 'text/plain', // Data type. This field is supported since API version 11.
data: 'Example data', // Data content, optional. This field is supported since API version 11.
remoteFileName: 'example.txt' // Optional. This field is supported since API version 11.
}, {
name: "Part2", // Data name. This field is supported since API version 11.
contentType: 'text/plain', // Data type. This field is supported since API version 11.
// data/app/el2/100/base/com.example.myapplication/haps/entry/files/fileName.txt
filePath: `${context.filesDir}/fileName.txt`, // File path, optional. This field is supported since API version 11.
remoteFileName: 'fileName.txt' // Optional. This field is supported since API version 11.
}
],
addressFamily: http.AddressFamily.DEFAULT // Optional. By default, the IPv4 or IPv6 address of the target domain name is selected. Supported since API 15.
customMethod: 'GET', // Optional. This field is supported since API version 23.
maxRedirects: 30, // Optional. The default value is 30. Supported since API 23.
sniHostName: "www.example.com", // Optional. This field is supported since API version 23.
reuseConnections: true, // Optional. The default value is true. This field is supported since API version 26.
inactivityMs: 0 // Optional. The default value is 0. This field is supported since API version 26.
},
(err: BusinessError, data: http.HttpResponse) => {
if (!err) {
// data.result carries the HTTP response. Parse the response based on service requirements.
console.info('Result:' + JSON.stringify(data.result));
console.info('code:' + JSON.stringify(data.responseCode));
console.info('type:' + JSON.stringify(data.resultType));
// data.header carries the HTTP response header. Parse the content based on service requirements.
console.info('header:' + JSON.stringify(data.header));
console.info('cookies:' + JSON.stringify(data.cookies)); // Cookies are supported since API version 8.
// HTTP interaction information can be obtained since API version 24.
console.info('connectionExtraInfo:' + JSON.stringify(data.connectionExtraInfo));
// Unsubscribe from HTTP Response Header events.
httpRequest.off('headersReceive');
// Call destroy() to release resources when the request is no longer needed, preventing memory leaks.
httpRequest.destroy();
} else {
console.error('error:' + JSON.stringify(err));
// Unsubscribe from HTTP Response Header events.
httpRequest.off('headersReceive');
// Call destroy() to release resources when the request is no longer needed, preventing memory leaks.
httpRequest.destroy();
}
});
NOTE If the data in console.info() contains a newline character, the data will be truncated.
HTTP responses compressed by the brotli algorithm are supported since API version 12.
http.createHttp
createHttp(): HttpRequest
Creates an HTTP request. You can use this API to initiate or destroy an HTTP request, or enable or disable listening for HTTP Response Header events. To initiate multiple HTTP requests, you must create an HttpRequest object for each HTTP request. An HttpRequest object corresponds to an HTTP request.
NOTE When the request is no longer needed, call destroy() to release resources. Otherwise, memory leaks may occur.
Atomic service API: This API can be used in atomic services since API version 11.
System capability: SystemCapability.Communication.NetStack
Return value
| Type | Description |
|---|---|
| HttpRequest | An HttpRequest object, which contains the request, requestInStream, requestSync, enableAutoCookie, destroy, on, and off methods. |
Example
import { http } from '@kit.NetworkKit';
let httpRequest = http.createHttp();
HttpRequest
Defines an HTTP request task. Before invoking APIs provided by HttpRequest, you must call createHttp() to create an HttpRequestTask object.
request
request(url: string, callback: AsyncCallback<HttpResponse>): void
Initiates an HTTP request to a given URL. This API uses an asynchronous callback to return the result.
NOTE
(1) This API can receive only data whose size is less than 5 MB. If the data size exceeds 5 MB, you need to set maxLimit to a larger value in HttpRequestOptions or call requestInStream to initiate a streaming request. Since API version 23, this API can receive a maximum of 50 MB data. In versions earlier than API version 23, this API can receive a maximum of 5 MB data, and any data exceeding this threshold will fail to be received.
(2) If you need to pass in cookies, add them to the options parameter.
(3) If the URL contains non-English characters, call encodeURL(url) to encode the URL before initiating an HTTP request.
Required permissions: ohos.permission.INTERNET
Atomic service API: This API can be used in atomic services since API version 11.
System capability: SystemCapability.Communication.NetStack
Parameters
| Name | Type | Mandatory | Description |
|---|---|---|---|
| url | string | Yes | URL for initiating an HTTP request. |
| callback | AsyncCallback<HttpResponse> | Yes | Callback used to return the result. |
Error codes
For details about the error codes, see Common Error Codes and HTTP Error Codes.
The HTTP error code mapping is in the format of 2300000 + Curl error code. For more common error codes, see Curl Error Codes.
| ID | Error Message |
|---|---|
| 401 | Parameter error. |
| 201 | Permission denied. |
| 2300001 | Unsupported protocol. |
| 2300003 | Invalid URL format or missing URL. |
| 2300005 | Failed to resolve the proxy name. |
| 2300006 | Failed to resolve the host name. |
| 2300007 | Failed to connect to the server. |
| 2300008 | Invalid server response. |
| 2300009 | Access to the remote resource denied. |
| 2300016 | Error in the HTTP2 framing layer. |
| 2300018 | Transferred a partial file. |
| 2300023 | Failed to write the received data to the disk or application. |
| 2300025 | Upload failed. |
| 2300026 | Failed to open or read local data from the file or application. |
| 2300027 | Out of memory. |
| 2300028 | Operation timeout. |
| 2300047 | The number of redirections reaches the maximum allowed. |
| 2300052 | The server returned nothing (no header or data). |
| 2300055 | Failed to send data to the peer. |
| 2300056 | Failed to receive data from the peer. |
| 2300058 | Local SSL certificate error. |
| 2300059 | The specified SSL cipher cannot be used. |
| 2300060 | Invalid SSL peer certificate or SSH remote key. |
| 2300061 | Invalid HTTP encoding format. |
| 2300063 | Maximum file size exceeded. |
| 2300070 | Remote disk full. |
| 2300073 | Remote file already exists. |
| 2300077 | The SSL CA certificate does not exist or is inaccessible. |
| 2300078 | Remote file not found. |
| 2300094 | Authentication error. |
| 2300997 | Cleartext traffic not permitted. |
| 2300998 | It is not allowed to access this domain. |
| 2300999 | Internal error. |
Example
import { http } from '@kit.NetworkKit';
let httpRequest = http.createHttp();
httpRequest.request("EXAMPLE_URL", (err: Error, data: http.HttpResponse) => {
if (!err) {
console.info('Result:' + data.result);
console.info('code:' + data.responseCode);
console.info('type:' + JSON.stringify(data.resultType));
console.info('header:' + JSON.stringify(data.header));
console.info('cookies:' + data.cookies); // Cookies are supported since API version 8.
} else {
console.error('error:' + JSON.stringify(err));
}
});
request
request(url: string, options: HttpRequestOptions, callback: AsyncCallback<HttpResponse>):void
Initiates an HTTP request containing specified options to a given URL. This API uses an asynchronous callback to return the result.
NOTE
(1) This API can receive only data whose size is less than 5 MB. If the data size exceeds 5 MB, you need to set maxLimit to a larger value in HttpRequestOptions or call requestInStream to initiate a streaming request. Since API version 23, this API can receive a maximum of 50 MB data. In versions earlier than API version 23, this API can receive a maximum of 5 MB data, and any data exceeding this threshold will fail to be received.
(2) If you need to pass in cookies, add them to the options parameter.
(3) If the URL contains non-English characters, call encodeURL(url) to encode the URL before initiating an HTTP request.
Required permissions: ohos.permission.INTERNET
Atomic service API: This API can be used in atomic services since API version 11.
System capability: SystemCapability.Communication.NetStack
Parameters
| Name | Type | Mandatory | Description |
|---|---|---|---|
| url | string | Yes | URL for initiating an HTTP request. |
| options | HttpRequestOptions | Yes | Request options. For details, see HttpRequestOptions. |
| callback | AsyncCallback<HttpResponse> | Yes | Callback used to return the result. If the operation is successful, the callback content is an HttpResponse object; otherwise, the callback content is undefined. |
Error codes
For details about the error codes, see Common Error Codes and HTTP Error Codes.
The HTTP error code mapping is in the format of 2300000 + Curl error code. For more common error codes, see Curl Error Codes.
| ID | Error Message |
|---|---|
| 401 | Parameter error. |
| 201 | Permission denied. |
| 2300001 | Unsupported protocol. |
| 2300003 | Invalid URL format or missing URL. |
| 2300005 | Failed to resolve the proxy name. |
| 2300006 | Failed to resolve the host name. |
| 2300007 | Failed to connect to the server. |
| 2300008 | Invalid server response. |
| 2300009 | Access to the remote resource denied. |
| 2300016 | Error in the HTTP2 framing layer. |
| 2300018 | Transferred a partial file. |
| 2300023 | Failed to write the received data to the disk or application. |
| 2300025 | Upload failed. |
| 2300026 | Failed to open or read local data from the file or application. |
| 2300027 | Out of memory. |
| 2300028 | Operation timeout. |
| 2300047 | The number of redirections reaches the maximum allowed. |
| 2300052 | The server returned nothing (no header or data). |
| 2300055 | Failed to send data to the peer. |
| 2300056 | Failed to receive data from the peer. |
| 2300058 | Local SSL certificate error. |
| 2300059 | The specified SSL cipher cannot be used. |
| 2300060 | Invalid SSL peer certificate or SSH remote key. |
| 2300061 | Invalid HTTP encoding format. |
| 2300063 | Maximum file size exceeded. |
| 2300070 | Remote disk full. |
| 2300073 | Remote file already exists. |
| 2300077 | The SSL CA certificate does not exist or is inaccessible. |
| 2300078 | Remote file not found. |
| 2300094 | Authentication error. |
| 2300997 | Cleartext traffic not permitted. |
| 2300998 | It is not allowed to access this domain. |
| 2300999 | Internal error. |
Example
import { http } from '@kit.NetworkKit';
class Header {
public contentType: string;
constructor(contentType: string) {
this.contentType = contentType;
}
}
let httpRequest = http.createHttp();
let options: http.HttpRequestOptions = {
method: http.RequestMethod.POST, // Optional. The default value is http.RequestMethod.GET.
// You are advised to use the body field to transfer the request body content. The specific format needs to be negotiated with the server.
body: 'data to send', // Supported since API version 26.
// You are advised to use the queryParams field to transfer URL parameters. The value can be a string or an object.
queryParams: { scene: 'request-demo', page: 1 }, // Supported since API version 26.
expectDataType: http.HttpDataType.STRING, // Optional. This parameter specifies the type of the return data.
usingCache: true, // Optional. The default value is true.
priority: 1, // Optional. The default value is 1.
// You can add header fields based on service requirements.
header: new Header('application/json'),
readTimeout: 60000, // Optional. The default value is 60000, in ms.
connectTimeout: 60000 // Optional. The default value is 60000, in ms.
usingProtocol: http.HttpProtocol.HTTP1_1, // Optional. The default protocol type is automatically specified by the system.
usingProxy: false, // Optional. By default, network proxy is not used. This field is supported since API version 10.
};
httpRequest.request("EXAMPLE_URL", options, (err: Error, data: http.HttpResponse) => {
if (!err) {
console.info('Result:' + data.result);
console.info('code:' + data.responseCode);
console.info('type:' + JSON.stringify(data.resultType));
console.info('header:' + JSON.stringify(data.header));
console.info('cookies:' + data.cookies); // Cookies are supported since API version 8.
} else {
console.error('error:' + JSON.stringify(err));
}
});
request
request(url: string, options? : HttpRequestOptions): Promise<HttpResponse>
Initiates an HTTP request containing specified options to a given URL. This API uses a promise to return the result.
NOTE
(1) This API can receive only data whose size is less than 5 MB. If the data size exceeds 5 MB, you need to set maxLimit to a larger value in HttpRequestOptions or call requestInStream to initiate a streaming request. Since API version 23, this API can receive a maximum of 50 MB data. In versions earlier than API version 23, this API can receive a maximum of 5 MB data, and any data exceeding this threshold will fail to be received.
(2) If you need to pass in cookies, add them to the options parameter.
(3) If the URL contains non-English characters, call encodeURL(url) to encode the URL before initiating an HTTP request.
Required permissions: ohos.permission.INTERNET
Atomic service API: This API can be used in atomic services since API version 11.
System capability: SystemCapability.Communication.NetStack
Parameters
| Name | Type | Mandatory | Description |
|---|---|---|---|
| url | string | Yes | URL for initiating an HTTP request. |
| options | HttpRequestOptions | No | Request options. For details, see HttpRequestOptions. |
Return value
| Type | Description |
|---|---|
| Promise<HttpResponse> | Promise used to return the result. |
Error codes
For details about the error codes, see Common Error Codes and HTTP Error Codes.
The HTTP error code mapping is in the format of 2300000 + Curl error code. For more common error codes, see Curl Error Codes.
| ID | Error Message |
|---|---|
| 401 | Parameter error. |
| 201 | Permission denied. |
| 2300001 | Unsupported protocol. |
| 2300003 | Invalid URL format or missing URL. |
| 2300005 | Failed to resolve the proxy name. |
| 2300006 | Failed to resolve the host name. |
| 2300007 | Failed to connect to the server. |
| 2300008 | Invalid server response. |
| 2300009 | Access to the remote resource denied. |
| 2300016 | Error in the HTTP2 framing layer. |
| 2300018 | Transferred a partial file. |
| 2300023 | Failed to write the received data to the disk or application. |
| 2300025 | Upload failed. |
| 2300026 | Failed to open or read local data from the file or application. |
| 2300027 | Out of memory. |
| 2300028 | Operation timeout. |
| 2300047 | The number of redirections reaches the maximum allowed. |
| 2300052 | The server returned nothing (no header or data). |
| 2300055 | Failed to send data to the peer. |
| 2300056 | Failed to receive data from the peer. |
| 2300058 | Local SSL certificate error. |
| 2300059 | The specified SSL cipher cannot be used. |
| 2300060 | Invalid SSL peer certificate or SSH remote key. |
| 2300061 | Invalid HTTP encoding format. |
| 2300063 | Maximum file size exceeded. |
| 2300070 | Remote disk full. |
| 2300073 | Remote file already exists. |
| 2300077 | The SSL CA certificate does not exist or is inaccessible. |
| 2300078 | Remote file not found. |
| 2300094 | Authentication error. |
| 2300997 | Cleartext traffic not permitted. |
| 2300998 | It is not allowed to access this domain. |
| 2300999 | Internal error. |
Example
import { http } from '@kit.NetworkKit';
class Header {
public contentType: string;
constructor(contentType: string) {
this.contentType = contentType;
}
}
let httpRequest = http.createHttp();
let promise = httpRequest.request("EXAMPLE_URL", {
method: http.RequestMethod.GET,
connectTimeout: 60000,
readTimeout: 60000,
header: new Header('application/json')
});
promise.then((data:http.HttpResponse) => {
console.info('Result:' + data.result);
console.info('code:' + data.responseCode);
console.info('type:' + JSON.stringify(data.resultType));
console.info('header:' + JSON.stringify(data.header));
console.info('cookies:' + data.cookies); // Cookies are supported since API version 8.
console.info('header.content-Type:' + data.header);
console.info('header.Status-Line:' + data.header);
}).catch((err:Error) => {
console.error('error:' + JSON.stringify(err));
});
destroy
destroy(): void
Stops an HTTP request task and releases system resources.
Atomic service API: This API can be used in atomic services since API version 11.
System capability: SystemCapability.Communication.NetStack
Example
import { http } from '@kit.NetworkKit';
let httpRequest = http.createHttp();
httpRequest.destroy();
requestInStream10+
requestInStream(url: string, callback: AsyncCallback<number>): void
Initiates an HTTP request containing specified options to a given URL. This API uses an asynchronous callback to return the result, which is a streaming response.
Required permissions: ohos.permission.INTERNET
Atomic service API: This API can be used in atomic services since API version 15.
System capability: SystemCapability.Communication.NetStack
Parameters
| Name | Type | Mandatory | Description |
|---|---|---|---|
| url | string | Yes | URL for initiating an HTTP request. |
| callback | AsyncCallback<number> | Yes | Callback used to return the result. If the request is successful, err is undefined, and the HTTP result code is returned. Otherwise, err is an error object. |
Error codes
For details about the error codes, see Common Error Codes and HTTP Error Codes.
The HTTP error code mapping is in the format of 2300000 + Curl error code. For more common error codes, see Curl Error Codes.
| ID | Error Message |
|---|---|
| 401 | Parameter error. |
| 201 | Permission denied. |
| 2300001 | Unsupported protocol. |
| 2300003 | Invalid URL format or missing URL. |
| 2300005 | Failed to resolve the proxy name. |
| 2300006 | Failed to resolve the host name. |
| 2300007 | Failed to connect to the server. |
| 2300008 | Invalid server response. |
| 2300009 | Access to the remote resource denied. |
| 2300016 | Error in the HTTP2 framing layer. |
| 2300018 | Transferred a partial file. |
| 2300023 | Failed to write the received data to the disk or application. |
| 2300025 | Upload failed. |
| 2300026 | Failed to open or read local data from the file or application. |
| 2300027 | Out of memory. |
| 2300028 | Operation timeout. |
| 2300047 | The number of redirections reaches the maximum allowed. |
| 2300052 | The server returned nothing (no header or data). |
| 2300055 | Failed to send data to the peer. |
| 2300056 | Failed to receive data from the peer. |
| 2300058 | Local SSL certificate error. |
| 2300059 | The specified SSL cipher cannot be used. |
| 2300060 | Invalid SSL peer certificate or SSH remote key. |
| 2300061 | Invalid HTTP encoding format. |
| 2300063 | Maximum file size exceeded. |
| 2300070 | Remote disk full. |
| 2300073 | Remote file already exists. |
| 2300077 | The SSL CA certificate does not exist or is inaccessible. |
| 2300078 | Remote file not found. |
| 2300094 | Authentication error. |
| 2300997 | Cleartext traffic not permitted. |
| 2300998 | It is not allowed to access this domain. |
| 2300999 | Internal error. |
Example
import { http } from '@kit.NetworkKit';
import { BusinessError } from '@kit.BasicServicesKit';
let httpRequest = http.createHttp();
httpRequest.requestInStream("EXAMPLE_URL", (err: BusinessError, data: number) => {
if (!err) {
console.info("requestInStream OK! ResponseCode is " + JSON.stringify(data));
} else {
console.error("requestInStream ERROR : err = " + JSON.stringify(err));
}
})
requestInStream10+
requestInStream(url: string, options: HttpRequestOptions, callback: AsyncCallback<number>): void
Initiates an HTTP request containing specified options to a given URL. This API uses an asynchronous callback to return the result, which is a streaming response.
Required permissions: ohos.permission.INTERNET
Atomic service API: This API can be used in atomic services since API version 15.
System capability: SystemCapability.Communication.NetStack
Parameters
| Name | Type | Mandatory | Description |
|---|---|---|---|
| url | string | Yes | URL for initiating an HTTP request. |
| options | HttpRequestOptions | Yes | Request options. For details, see HttpRequestOptions. |
| callback | AsyncCallback<number> | Yes | Callback used to return the result. If the request is successful, err is undefined, and the HTTP result code is returned. Otherwise, err is an error object. |
Error codes
For details about the error codes, see Common Error Codes and HTTP Error Codes.
The HTTP error code mapping is in the format of 2300000 + Curl error code. For more common error codes, see Curl Error Codes.
| ID | Error Message |
|---|---|
| 401 | Parameter error. |
| 201 | Permission denied. |
| 2300001 | Unsupported protocol. |
| 2300003 | Invalid URL format or missing URL. |
| 2300005 | Failed to resolve the proxy name. |
| 2300006 | Failed to resolve the host name. |
| 2300007 | Failed to connect to the server. |
| 2300008 | Invalid server response. |
| 2300009 | Access to the remote resource denied. |
| 2300016 | Error in the HTTP2 framing layer. |
| 2300018 | Transferred a partial file. |
| 2300023 | Failed to write the received data to the disk or application. |
| 2300025 | Upload failed. |
| 2300026 | Failed to open or read local data from the file or application. |
| 2300027 | Out of memory. |
| 2300028 | Operation timeout. |
| 2300047 | The number of redirections reaches the maximum allowed. |
| 2300052 | The server returned nothing (no header or data). |
| 2300055 | Failed to send data to the peer. |
| 2300056 | Failed to receive data from the peer. |
| 2300058 | Local SSL certificate error. |
| 2300059 | The specified SSL cipher cannot be used. |
| 2300060 | Invalid SSL peer certificate or SSH remote key. |
| 2300061 | Invalid HTTP encoding format. |
| 2300063 | Maximum file size exceeded. |
| 2300070 | Remote disk full. |
| 2300073 | Remote file already exists. |
| 2300077 | The SSL CA certificate does not exist or is inaccessible. |
| 2300078 | Remote file not found. |
| 2300094 | Authentication error. |
| 2300997 | Cleartext traffic not permitted. |
| 2300998 | It is not allowed to access this domain. |
| 2300999 | Internal error. |
Example
import { http } from '@kit.NetworkKit';
import { BusinessError } from '@kit.BasicServicesKit';
class Header {
public contentType: string;
constructor(contentType: string) {
this.contentType = contentType;
}
}
let httpRequest = http.createHttp();
let options: http.HttpRequestOptions = {
method: http.RequestMethod.POST, // Optional. The default value is http.RequestMethod.GET.
// This field is used to transfer the request body when a POST request is used. Its format needs to be negotiated with the server.
extraData: 'data to send', // Since API version 26, you are advised to use the body field to transfer the request body content. The specific format needs to be negotiated with the server.
expectDataType: http.HttpDataType.STRING, // Optional. This parameter specifies the type of the return data.
usingCache: true, // Optional. The default value is true.
priority: 1, // Optional. The default value is 1.
// You can add header fields based on service requirements.
header: new Header('application/json'),
readTimeout: 60000, // Optional. The default value is 60000, in ms.
connectTimeout: 60000 // Optional. The default value is 60000, in ms.
usingProtocol: http.HttpProtocol.HTTP1_1, // Optional. The default protocol type is automatically specified by the system.
usingProxy: false, // Optional. By default, network proxy is not used. This field is supported since API version 10.
};
httpRequest.requestInStream("EXAMPLE_URL", options, (err: BusinessError<void> , data: number) => {
if (!err) {
console.info("requestInStream OK! ResponseCode is " + JSON.stringify(data));
} else {
console.error("requestInStream ERROR : err = " + JSON.stringify(err));
}
})
requestInStream10+
requestInStream(url: string, options? : HttpRequestOptions): Promise<number>
Initiates an HTTP request containing specified options to a given URL. This API uses a promise to return the result, which is a streaming response.
Required permissions: ohos.permission.INTERNET
Atomic service API: This API can be used in atomic services since API version 15.
System capability: SystemCapability.Communication.NetStack
Parameters
| Name | Type | Mandatory | Description |
|---|---|---|---|
| url | string | Yes | URL for initiating an HTTP request. |
| options | HttpRequestOptions | No | Request options. For details, see HttpRequestOptions. |
Return value
| Type | Description |
|---|---|
| Promise<number> | Promise used to return the result. |
Error codes
For details about the error codes, see Common Error Codes and HTTP Error Codes.
The HTTP error code mapping is in the format of 2300000 + Curl error code. For more common error codes, see Curl Error Codes.
| ID | Error Message |
|---|---|
| 401 | Parameter error. |
| 201 | Permission denied. |
| 2300001 | Unsupported protocol. |
| 2300003 | Invalid URL format or missing URL. |
| 2300005 | Failed to resolve the proxy name. |
| 2300006 | Failed to resolve the host name. |
| 2300007 | Failed to connect to the server. |
| 2300008 | Invalid server response. |
| 2300009 | Access to the remote resource denied. |
| 2300016 | Error in the HTTP2 framing layer. |
| 2300018 | Transferred a partial file. |
| 2300023 | Failed to write the received data to the disk or application. |
| 2300025 | Upload failed. |
| 2300026 | Failed to open or read local data from the file or application. |
| 2300027 | Out of memory. |
| 2300028 | Operation timeout. |
| 2300047 | The number of redirections reaches the maximum allowed. |
| 2300052 | The server returned nothing (no header or data). |
| 2300055 | Failed to send data to the peer. |
| 2300056 | Failed to receive data from the peer. |
| 2300058 | Local SSL certificate error. |
| 2300059 | The specified SSL cipher cannot be used. |
| 2300060 | Invalid SSL peer certificate or SSH remote key. |
| 2300061 | Invalid HTTP encoding format. |
| 2300063 | Maximum file size exceeded. |
| 2300070 | Remote disk full. |
| 2300073 | Remote file already exists. |
| 2300077 | The SSL CA certificate does not exist or is inaccessible. |
| 2300078 | Remote file not found. |
| 2300094 | Authentication error. |
| 2300997 | Cleartext traffic not permitted. |
| 2300998 | It is not allowed to access this domain. |
| 2300999 | Internal error. |
Example
import { http } from '@kit.NetworkKit';
class Header {
public contentType: string;
constructor(contentType: string) {
this.contentType = contentType;
}
}
let httpRequest = http.createHttp();
let promise = httpRequest.requestInStream("EXAMPLE_URL", {
method: http.RequestMethod.GET,
connectTimeout: 60000,
readTimeout: 60000,
header: new Header('application/json')
});
promise.then((data: number) => {
console.info("requestInStream OK!" + data);
}).catch((err: Error) => {
console.error("requestInStream ERROR : err = " + JSON.stringify(err));
});
requestSync
requestSync(url: string, options?: HttpRequestOptions): HttpResponse
Initiates an HTTP network request based on the URL and related configuration options (optional). This API returns the response synchronously.
NOTE
(1) This API can receive data of up to 50 MB. To receive more than 50 MB of data, set the maxLimit parameter in HttpRequestOptions.
(2) If you need to pass in cookies, add them to the options parameter.
(3) If the URL contains non-English characters, call encodeURL(url) to encode the URL before initiating an HTTP request.
(4) This API is synchronous and blocks the current thread until an HTTP response or error code is returned.
Since: 26.0.0
Required permission: ohos.permission.INTERNET
System capability: SystemCapability.Communication.NetStack
Model restriction: This API can be used only in the stage model.
Parameters
| Name | Type | Mandatory | Description |
|---|---|---|---|
| url | string | Yes | URL for initiating an HTTP request. |
| options | HttpRequestOptions | No | Request options. For details, see HttpRequestOptions. |
Return value
| Type | Description |
|---|---|
| HttpResponse | HTTP request response result that is returned synchronously. |
Error codes
For details about the error codes, see Common Error Codes and HTTP Error Codes.
The HTTP error code mapping is in the format of 2300000 + Curl error code. For more common error codes, see Curl Error Codes.
| ID | Error Message |
|---|---|
| 401 | Parameter error. |
| 201 | Permission denied. |
| 2300001 | Unsupported protocol. |
| 2300003 | Invalid URL format or missing URL. |
| 2300005 | Failed to resolve the proxy name. |
| 2300006 | Failed to resolve the host name. |
| 2300007 | Failed to connect to the server. |
| 2300008 | Invalid server response. |
| 2300009 | Access to the remote resource denied. |
| 2300016 | Error in the HTTP2 framing layer. |
| 2300018 | Transferred a partial file. |
| 2300023 | Failed to write the received data to the disk or application. |
| 2300025 | Upload failed. |
| 2300026 | Failed to open or read local data from the file or application. |
| 2300027 | Out of memory. |
| 2300028 | Operation timeout. |
| 2300047 | The number of redirections reaches the maximum allowed. |
| 2300052 | The server returned nothing (no header or data). |
| 2300055 | Failed to send data to the peer. |
| 2300056 | Failed to receive data from the peer. |
| 2300058 | Local SSL certificate error. |
| 2300059 | The specified SSL cipher cannot be used. |
| 2300060 | Invalid SSL peer certificate or SSH remote key. |
| 2300061 | Invalid HTTP encoding format. |
| 2300063 | Maximum file size exceeded. |
| 2300070 | Remote disk full. |
| 2300073 | Remote file already exists. |
| 2300077 | The SSL CA certificate does not exist or is inaccessible. |
| 2300078 | Remote file not found. |
| 2300094 | Authentication error. |
| 2300997 | Cleartext traffic not permitted. |
| 2300998 | It is not allowed to access this domain. |
| 2300999 | Internal error. |
Example
import { http } from '@kit.NetworkKit';
class Header {
public contentType: string;
constructor(contentType: string) {
this.contentType = contentType;
}
}
let httpRequest = http.createHttp();
let options: http.HttpRequestOptions = {
method: http.RequestMethod.POST, // Optional. The default value is http.RequestMethod.GET.
// This field is used to transfer the request body when a POST request is used. Its format needs to be negotiated with the server.
extraData: 'data to send',
expectDataType: http.HttpDataType.STRING, // Optional. This parameter specifies the type of the return data.
usingCache: true, // Optional. The default value is true.
priority: 1, // Optional. The default value is 1.
// You can add header fields based on service requirements.
header: new Header('application/json'),
readTimeout: 60000, // Optional. The default value is 60000, in ms.
connectTimeout: 60000 // Optional. The default value is 60000, in ms.
usingProtocol: http.HttpProtocol.HTTP1_1, // Optional. The default protocol type is automatically specified by the system.
usingProxy: false, // Optional. By default, network proxy is not used. This field is supported since API version 10.
};
let url = "EXAMPLE_URL"; // Access URL.
try {
let data: http.HttpResponse = httpRequest.requestSync(url, options);
console.info('Result:' + data.result);
console.info('code:' + data.responseCode);
console.info('type:' + JSON.stringify(data.resultType));
console.info('header:' + JSON.stringify(data.header));
console.info('cookies:' + data.cookies); // Cookies are supported since API version 8.
} catch (err) {
console.error('error:' + JSON.stringify(err));
}
httpRequest.destroy();
enableAutoCookie
enableAutoCookie(enable: boolean): void
Sets whether to automatically carry and share cookies. That is, whether to automatically reuse the cookies delivered by the server among multiple requests of the same HttpRequest instance.
NOTE
(1) The default value is false, indicating that cookies are not automatically carried.
(2) If the value is changed from false to true, the setting takes effect when the request API is called to initiate a request, and cookies are automatically shared.
(3) If the value is changed from true to false, the cookie sharing status stored in the current instance is cleared.
Since: 26.0.0
System capability: SystemCapability.Communication.NetStack
Model restriction: This API can be used only in the stage model.
Parameters
| Name | Type | Mandatory | Description |
|---|---|---|---|
| enable | boolean | Yes | Whether to automatically carry cookies. true: yes; false: no. |
Example
import { http } from '@kit.NetworkKit';
let httpRequest = http.createHttp();
let url = "EXAMPLE_URL"; // Access URL. You need to define the URL based on the actual scenario.
// Enable automatic cookie sharing.
httpRequest.enableAutoCookie(true);
httpRequest.request(url, {
method: http.RequestMethod.GET
}).then((data: http.HttpResponse) => {
console.info('first request code:' + data.responseCode);
// Subsequent requests will automatically reuse the cookies saved by this instance.
return httpRequest.request(url, { method: http.RequestMethod.GET });
}).then((data: http.HttpResponse) => {
console.info('second request code:' + data.responseCode);
}).catch((err: Error) => {
console.error('error:' + JSON.stringify(err));
}).finally(() => {
httpRequest.destroy();
});
on("headerReceive")(deprecated)
on(type: "headerReceive", callback: AsyncCallback<Object>): void
Registers an observer for HTTP Response Header events.
NOTE This API is supported since API version 6 and deprecated since API version 8. You are advised to use on("headersReceive") instead.
System capability: SystemCapability.Communication.NetStack
Parameters
| Name | Type | Mandatory | Description |
|---|---|---|---|
| type | string | Yes | Event type. The value is headerReceive. |
| callback | AsyncCallback<Object> | Yes | Callback used to return the result. If the operation is successful, error is undefined, and data is the received HTTP response header. Otherwise, error is an error object. |
Example
import { http } from '@kit.NetworkKit';
import { BusinessError } from '@kit.BasicServicesKit';
let httpRequest = http.createHttp();
httpRequest.on("headerReceive", (data: BusinessError) => {
console.error("error:" + JSON.stringify(data));
});
off("headerReceive")(deprecated)
off(type: "headerReceive", callback?: AsyncCallback<Object>): void
Unregisters the observer for HTTP Response Header events.
NOTE
This API is supported since API version 6 and deprecated since API version 8. You are advised to use off("headersReceive") instead.
System capability: SystemCapability.Communication.NetStack
Parameters
| Name | Type | Mandatory | Description |
|---|---|---|---|
| type | string | Yes | Event type. The value is headerReceive. |
| callback | AsyncCallback<Object> | No | Callback used to return the result. You can pass the callback of the on function if you want to cancel listening for a certain type of events. If you do not pass the callback, you will cancel listening for all events. |
Example
import { http } from '@kit.NetworkKit';
let httpRequest = http.createHttp();
httpRequest.off("headerReceive");
on("headersReceive")8+
on(type: "headersReceive", callback: Callback<Object>): void
Registers an observer for HTTP Response Header events.
Atomic service API: This API can be used in atomic services since API version 11.
System capability: SystemCapability.Communication.NetStack
Parameters
| Name | Type | Mandatory | Description |
|---|---|---|---|
| type | string | Yes | Event type. The value is headersReceive. |
| callback | Callback<Object> | Yes | Callback used to return the HTTP response header. |
Example
import { http } from '@kit.NetworkKit';
let httpRequest = http.createHttp();
httpRequest.on("headersReceive", (header: Object) => {
console.info("header: " + JSON.stringify(header));
});
httpRequest.off("headersReceive");
off("headersReceive")8+
off(type: "headersReceive", callback?: Callback<Object>): void
Unregisters the observer for HTTP Response Header events.
Atomic service API: This API can be used in atomic services since API version 11.
System capability: SystemCapability.Communication.NetStack
Parameters
| Name | Type | Mandatory | Description |
|---|---|---|---|
| type | string | Yes | Event type. The value is headersReceive. |
| callback | Callback<Object> | No | Callback used to return the result. You can pass the callback of the on function if you want to cancel listening for a certain type of events. If you do not pass the callback, you will cancel listening for all events. |
Example
import { http } from '@kit.NetworkKit';
let httpRequest = http.createHttp();
httpRequest.on("headersReceive", (header: Object) => {
console.info("header: " + JSON.stringify(header));
});
httpRequest.off("headersReceive");
once("headersReceive")8+
once(type: "headersReceive", callback: Callback<Object>): void
Registers a one-time observer for HTTP Response Header events. Once triggered, the observer will be removed. This API uses an asynchronous callback to return the result.
Atomic service API: This API can be used in atomic services since API version 15.
System capability: SystemCapability.Communication.NetStack
Parameters
| Name | Type | Mandatory | Description |
|---|---|---|---|
| type | string | Yes | Event type. The value is headersReceive. |
| callback | Callback<Object> | Yes | Callback used to return the HTTP response header. |
Example
import { http } from '@kit.NetworkKit';
let httpRequest = http.createHttp();
httpRequest.once("headersReceive", (header: Object) => {
console.info("header: " + JSON.stringify(header));
});
on("dataReceive")10+
on(type: "dataReceive", callback: Callback<ArrayBuffer>): void
Registers an observer for events indicating receiving of HTTP streaming responses.
Atomic service API: This API can be used in atomic services since API version 15.
System capability: SystemCapability.Communication.NetStack
Parameters
| Name | Type | Mandatory | Description |
|---|---|---|---|
| type | string | Yes | Event type. The value is dataReceive. |
| callback | Callback<ArrayBuffer> | Yes | Callback used to return the result. If the operation is successful, error is undefined, and data is the received HTTP streaming data of the ArrayBuffer type. Otherwise, error is an error object. |
Example
import { http } from '@kit.NetworkKit';
let httpRequest = http.createHttp();
httpRequest.on("dataReceive", (data: ArrayBuffer) => {
console.info("dataReceive length: " + JSON.stringify(data.byteLength));
});
httpRequest.off("dataReceive");
off("dataReceive")10+
off(type: "dataReceive", callback?: Callback<ArrayBuffer>): void
Unregisters the observer for events indicating receiving of HTTP streaming responses.
Atomic service API: This API can be used in atomic services since API version 15.
System capability: SystemCapability.Communication.NetStack
Parameters
| Name | Type | Mandatory | Description |
|---|---|---|---|
| type | string | Yes | Event type. The value is dataReceive. |
| callback | Callback<ArrayBuffer> | No | Callback used to return the result. You can pass the callback of the on function if you want to cancel listening for a certain type of events. If you do not pass the callback, you will cancel listening for all events. |
Example
import { http } from '@kit.NetworkKit';
let httpRequest = http.createHttp();
httpRequest.on("dataReceive", (data: ArrayBuffer) => {
console.info("dataReceive length: " + JSON.stringify(data.byteLength));
});
httpRequest.off("dataReceive");
on("dataEnd")10+
on(type: "dataEnd", callback: Callback<void>): void
Registers an observer for events indicating completion of receiving HTTP streaming responses.
Atomic service API: This API can be used in atomic services since API version 15.
System capability: SystemCapability.Communication.NetStack
Parameters
| Name | Type | Mandatory | Description |
|---|---|---|---|
| type | string | Yes | Event type. The value is dataEnd. |
| callback | Callback<void> | Yes | Callback used to return the result. If the operation is successful, err is undefined; otherwise, err is an Error object. |
Example
import { http } from '@kit.NetworkKit';
let httpRequest = http.createHttp();
httpRequest.on("dataEnd", () => {
console.info("Receive dataEnd !");
});
httpRequest.off("dataEnd");
off("dataEnd")10+
off(type: "dataEnd", callback?: Callback<void>): void
Unregisters the observer for events indicating completion of receiving HTTP streaming responses.
Atomic service API: This API can be used in atomic services since API version 15.
System capability: SystemCapability.Communication.NetStack
Parameters
| Name | Type | Mandatory | Description |
|---|---|---|---|
| type | string | Yes | Event type. The value is dataEnd. |
| callback | Callback<void> | No | Callback used to return the result. You can pass the callback of the on function if you want to cancel listening for a certain type of events. If you do not pass the callback, you will cancel listening for all events. |
Example
import { http } from '@kit.NetworkKit';
let httpRequest = http.createHttp();
httpRequest.on("dataEnd", () => {
console.info("Receive dataEnd !");
});
httpRequest.off("dataEnd");
on('dataReceiveProgress')10+
on(type: 'dataReceiveProgress', callback: Callback<DataReceiveProgressInfo>): void
Registers an observer for events indicating progress of receiving HTTP streaming responses.
Atomic service API: This API can be used in atomic services since API version 15.
System capability: SystemCapability.Communication.NetStack
Parameters
| Name | Type | Mandatory | Description |
|---|---|---|---|
| type | string | Yes | Event type. The value is dataReceiveProgress. |
| callback | Callback<DataReceiveProgressInfo> | Yes | Callback used to return the result. If the operation is successful, the callback content is a DataReceiveProgressInfo object; otherwise, the callback content is undefined. |
Example
import { http } from '@kit.NetworkKit';
let httpRequest = http.createHttp();
httpRequest.on("dataReceiveProgress", (data: http.DataReceiveProgressInfo) => {
console.info("dataReceiveProgress:" + JSON.stringify(data));
});
httpRequest.off("dataReceiveProgress");
off('dataReceiveProgress')10+
off(type: 'dataReceiveProgress', callback?: Callback<DataReceiveProgressInfo>): void
Unregisters the observer for events indicating progress of receiving HTTP streaming responses.
Atomic service API: This API can be used in atomic services since API version 15.
System capability: SystemCapability.Communication.NetStack
Parameters
| Name | Type | Mandatory | Description |
|---|---|---|---|
| type | string | Yes | Event type. The value is dataReceiveProgress. |
| callback | Callback<DataReceiveProgressInfo> | No | Callback used to return the result. You can pass the callback of the on function if you want to cancel listening for a certain type of events. If you do not pass the callback, you will cancel listening for all events. |
Example
import { http } from '@kit.NetworkKit';
let httpRequest = http.createHttp();
httpRequest.on("dataReceiveProgress", (data: http.DataReceiveProgressInfo) => {
console.info("dataReceiveProgress:" + JSON.stringify(data));
});
httpRequest.off("dataReceiveProgress");
on('dataSendProgress')11+
on(type: 'dataSendProgress', callback: Callback<DataSendProgressInfo>): void
Registers an observer for events indicating progress of sending HTTP requests.
Atomic service API: This API can be used in atomic services since API version 15.
System capability: SystemCapability.Communication.NetStack
Parameters
| Name | Type | Mandatory | Description |
|---|---|---|---|
| type | string | Yes | Event type. The value is dataSendProgress. |
| callback | Callback<DataSendProgressInfo> | Yes | Callback used to return the result. If the operation is successful, the callback content is a DataSendProgressInfo object; otherwise, the callback content is undefined. |
Example
import { http } from '@kit.NetworkKit';
let httpRequest = http.createHttp();
httpRequest.on("dataSendProgress", (data: http.DataSendProgressInfo) => {
console.info("dataSendProgress:" + JSON.stringify(data));
});
httpRequest.off("dataSendProgress");
off('dataSendProgress')11+
off(type: 'dataSendProgress', callback?: Callback<DataSendProgressInfo>): void
Unregisters the observer for events indicating progress of sending HTTP requests.
Atomic service API: This API can be used in atomic services since API version 15.
System capability: SystemCapability.Communication.NetStack
Parameters
| Name | Type | Mandatory | Description |
|---|---|---|---|
| type | string | Yes | Event type. The value is dataSendProgress. |
| callback | Callback<DataSendProgressInfo> | No | Callback used to return the result. You can pass the callback of the on function if you want to cancel listening for a certain type of events. If you do not pass the callback, you will cancel listening for all events. |
Example
import { http } from '@kit.NetworkKit';
let httpRequest = http.createHttp();
httpRequest.on("dataSendProgress", (data: http.DataSendProgressInfo) => {
console.info("dataSendProgress:" + JSON.stringify(data));
});
httpRequest.off("dataSendProgress");
HttpRequestOptions
Defines the options for initiating an HTTP request.
System capability: SystemCapability.Communication.NetStack
| Name | Type | Read Only | Optional | Description |
|---|---|---|---|---|
| method | RequestMethod | No | Yes | Request method. The default value is GET. Atomic service API: This API can be used in atomic services since API version 11. |
| extraData | string | Object | ArrayBuffer | No | Yes | Additional data for sending a request. This parameter is not used by default. Since API version 26, you are advised to use the body and queryParams parameters preferentially. Note: Do not add this parameter if no extra data is available. If this parameter must be added, set it to undefined or null. Do not pass the parameter as "". - If the HTTP request uses a POST, PUT, or DELETE method, this field serves as the content of the HTTP request and is encoded in UTF-8 format. Example: (1) If content-Type is application/x-www-form-urlencoded, the data in the request body must be encoded in the format of key1=value1&key2=value2&key3=value3 after URL transcoding (encodeURIComponent/encodeURI) and this field is usually in the String format. (2) If content-Type is text/xml, this field is usually in the String format. (3) If content-Type is application/json, this field is usually in the Object format. (4) If content-Type is application/octet-stream, this field is usually in the ArrayBuffer format. (5) If content-Type is multipart/form-data and the content to be uploaded is a file, this field is usually in the ArrayBuffer format. The preceding information is for reference only and may vary according to the actual situation. - If the HTTP request uses the GET, OPTIONS, TRACE, or CONNECT method, this parameter serves as a supplement to HTTP request parameters. Parameters of the string type need to be encoded before being passed to the HTTP request. Parameters of the object type do not need to be precoded and will be directly concatenated to the URL. Parameters of the ArrayBuffer type will not be concatenated to the URL. Atomic service API: This API can be used in atomic services since API version 11. |
| body | string | Object | ArrayBuffer | No | Yes | HTTP request body. After this field is set, the framework preferentially sends this field as the request body. - The value can be a string, an object, or an ArrayBuffer. A string is sent as the original value, an object is serialized before being sent, and an ArrayBuffer is sent in binary format. - If both body and extraData are configured, body takes precedence and extraData will be ignored. - This field can be used with any request method to explicitly specify the request body. Since: 26.0.0 Model restriction: This API can be used only in the stage model. |
| queryParams | string | QueryParamObject | No | Yes | Request parameters appended to the URL. - The value can be a string or a QueryParamObject. A string is directly appended to the URL (without repeated encoding). A QueryParamObject is automatically encoded and serialized by the system. - When a string is used, the leading ? is not required. Use & to separate multiple parameters. - If both queryParams and extraData are configured, queryParams takes precedence, and the URL parameter supplementation logic in extraData is ignored. Since: 26.0.0 Model restriction: This API can be used only in the stage model. |
| expectDataType9+ | HttpDataType | No | Yes | Type of the returned data. This parameter is not used by default. If this parameter is set, the system returns the specified type of data preferentially. If the specified type is Object, the value can contain a maximum of 65536 characters. Atomic service API: This API can be used in atomic services since API version 11. |
| usingCache9+ | boolean | No | Yes | Whether to use the cache. The value true indicates that the cache is preferentially read when a request is initiated, and the value false indicates that the cache is not used. The default value is true. The cache function takes effect when the process is started. The new cached data will replace the existing cached data. Atomic service API: This API can be used in atomic services since API version 11. |
| priority9+ | number | No | Yes | Priority of concurrent HTTP/HTTPS requests. A larger value indicates a higher priority. The value range is [1, 1000]. The default value is 1. Atomic service API: This API can be used in atomic services since API version 11. |
| header | Object | No | Yes | HTTP request header. If the request method is POST, PUT, DELETE, or null, the default value is {'content-Type': 'application/json'}. Otherwise, the default value is {'content-Type': 'application/x-www-form-urlencoded'}. If the header contains fields of numeric type, the maximum value must be an int64 integer. The header field supports the JSON format (as shown in Example) and the Record<string, string> format. Atomic service API: This API can be used in atomic services since API version 11. |
| readTimeout | number | No | Yes | Read timeout duration. The default value is 60000, in ms. The input value must be an uint32_t integer. The value 0 indicates no timeout. Atomic service API: This API can be used in atomic services since API version 11. |
| connectTimeout | number | No | Yes | Connection timeout interval. The default value is 60000, in ms. The input value must be an uint32_t integer. Atomic service API: This API can be used in atomic services since API version 11. |
| usingProtocol9+ | HttpProtocol | No | Yes | Protocol. The default value is automatically specified by the system. Atomic service API: This API can be used in atomic services since API version 11. |
| usingProxy10+ | boolean | HttpProxy | No | Yes | HTTP proxy configuration. If this item is not configured, the system proxy is used by default. - If usingProxy is set to true, the default network proxy is used. If usingProxy is set to false, no proxy is used. - If usingProxy is of the HttpProxy type, the specified network proxy is used. The HttpProxy supports the username and password fields from API version 22. Atomic service API: This API can be used in atomic services since API version 11. |
| caPath10+ | string | No | Yes | CA certificate data. If this parameter is set and the certificate is valid, the system uses the specified CA certificate and the preset CA certificate. Otherwise, the system uses only the preset CA certificate. The CA certificate path is the sandbox mapping path, which can be obtained by using UIAbilityContext APIs. Currently, only .pem certificates are supported. The preset CA certificate is available at /etc/ssl/certs/cacert.pem. Atomic service API: This API can be used in atomic services since API version 11. |
| caData20+ | string | No | Yes | CA certificate data. If this parameter is set and the certificate is valid, the system uses the specified CA certificate and the preset CA certificate. Otherwise, the system uses only the preset CA certificate. If both caPath and caData are set, caData is ignored by the system. Currently, only certificates in .pem format are supported. The maximum length is 8000 bytes. Only one certificate can be specified. A certificate chain is not allowed. The preset CA certificate is available at /etc/ssl/certs/cacert.pem. This path is the sandbox mapping path, which can be obtained by using UIAbilityContext APIs. Atomic service API: This API can be used in atomic services since API version 20. |
| resumeFrom11+ | number | No | Yes | Download start position. This field can be used only for the GET method. As stipulated in section 3.1 of RFC 7233, servers are allowed to ignore range requests. - If the HTTP PUT method is used, do not use this option because it may conflict with other options. - The value ranges from 1 to 4294967296 (4 GB). If the value is out of this range, this field does not take effect. |
| resumeTo11+ | number | No | Yes | Download end position. This field can be used only for the GET method. As stipulated in section 3.1 of RFC 7233, servers are allowed to ignore range requests. - If the HTTP PUT method is used, do not use this option because it may conflict with other options. - The value ranges from 1 to 4294967296 (4 GB). If the value is out of this range, this field does not take effect. |
| clientCert11+ | ClientCert | No | Yes | Client certificate. |
| dnsOverHttps11+ | string | No | Yes | Whether to use an HTTPS server for DNS resolution. - The value must be URL-encoded in the following format: "https:// host:port/path". |
| dnsServers11+ | Array<string> | No | Yes | Array of DNS servers used for DNS resolution. - A maximum of three DNS servers can be set. If there are more than three DNS servers, only the first three DNS servers are used. - The DNS servers must be expressed as IPv4 or IPv6 addresses. |
| maxLimit11+ | number | No | Yes | Maximum number of bytes in a response. The default value is 5*1024*1024, in bytes. The maximum value is 100*1024*1024. |
| multiFormDataList11+ | Array<MultiFormData> | No | Yes | Form data list. This field is valid when content-Type is set to multipart/form-data. |
| certificatePinning12+ | CertificatePinning | CertificatePinning[] | No | Yes | Dynamic configuration of certificate pinning. One or more certificate PINs can be specified. |
| addressFamily15+ | AddressFamily | No | Yes | IP address family. You can specify an address type for domain name resolution. |
| remoteValidation18+ | RemoteValidation | No | Yes | Certificate authority (CA), which is used to verify the identity of a remote server. If the parameter is not set, the default value is used. The options are as follows: Atomic service API: This API can be used in atomic services since API version 18. |
| tlsOptions18+ | TlsOptions | No | Yes | TLS configuration. Atomic service API: This API can be used in atomic services since API version 18. |
| serverAuthentication18+ | ServerAuthentication | No | Yes | Whether to verify the server identity during a secure connection. The identity is not verified by default. Atomic service API: This API can be used in atomic services since API version 18. |
| sslType20+ | SslType | No | Yes | Security communication protocol. You can use TLS (default) or TLCP. If TLCP is used, the related options (such as caPath, clientCert, and clientEncCert) must be set to valid values. Atomic service API: This API can be used in atomic services since API version 20. |
| clientEncCert20+ | ClientCert | No | Yes | Client certificate, which is used by the server to verify the client identity. Atomic service API: This API can be used in atomic services since API version 20. |
| customMethod23+ | string | No | Yes | Custom request method. For example, when the WebDAV extension protocol is implemented, customMethod has a higher priority than method. - The default value is an empty string. The value can contain a maximum of 128 characters. If the value exceeds 128 characters, the setting does not take effect. - If customMethod meets the WebDAV extension protocol request requirements but the server does not support the request, the server response code of the request is usually 405 or 501 (the actual result depends on the server behavior). - If customMethod does not meet the WebDAV extension protocol request requirements, the server response code of the request is usually 400 or 405 (the actual result depends on the server behavior). |
| maxRedirects23+ | number | No | Yes | The maximum number of redirections can be specified for HttpRequest. - The default value is 30. - The value range is [0, 2147483647]. If the value is set to 0, redirection is disabled. If the number of redirections on the server exceeds the maximum number of redirections, error code 2300047 is returned. If the value is out of the range, the default value 30 takes effect. |
| sniHostName23+ | string | No | Yes | Used to allow the client to declare the target domain name to the server in the TLS handshake phase by configuring the server name indication (SNI). In this way, the server can select the corresponding SSL/TLS certificate based on the domain name for encrypted communication. - The default value is an empty string. The value of sniHostName can contain a maximum of 255 characters. If the length limit is exceeded or the value is an empty string, the setting does not take effect. |
| pathPreference23+ | PathPreference | No | Yes | Used to specify the network to be activated in an HTTP request. |
| reuseConnections | boolean | No | Yes | Whether to reuse the connection for an HTTP request. The default value is true, meaning to reuse the existing connection. The value false means the opposite. This field can be used together with the inactivityMs field to customize the connection timeout interval. - Connection reuse means that after an HTTP request is completed, the underlying TCP connection is not immediately closed. Instead, it remains in the connection pool. If subsequent HTTP requests have the same target address, the connection can be reused, reducing the overhead of TCP and TLS handshakes and improving performance. Since: 26.0.0 Model restriction: This API can be used only in the stage model. |
| inactivityMs | number | No | Yes | Maximum idle time of a connection in the connection pool. If this value is exceeded, the connection is closed. The unit is ms. The default value is 118s. The system calculates the connection idle time, rounds it down to seconds, and then compares it with the configured value. - The value range is (0, 2147483647]. If a value less than or equal to 0 is passed, the system uses the default value 118s. This parameter does not take effect when reuseConnections is set to false. Since: 26.0.0 Model restriction: This API can be used only in the stage model. |
RequestMethod
Defines an HTTP request method.
Atomic service API: This API can be used in atomic services since API version 11.
System capability: SystemCapability.Communication.NetStack
| Name | Value | Description |
|---|---|---|
| OPTIONS | "OPTIONS" | Describes the communication options of the target resource. |
| GET | "GET" | Requests the representation of the specified resource. The GET request should only retrieve data and should not contain the request content. |
| HEAD | "HEAD" | Requests the same response (but does not have a response body) as the GET request. |
| POST | "POST" | Submits an entity to a specified resource, which usually causes a status change on the server. |
| PUT | "PUT" | Replaces all current representations of the target resource with the requested content. |
| DELETE | "DELETE" | Deletes the specified resource. |
| TRACE | "TRACE" | Performs a message loopback test along the path to the target resource. |
| CONNECT | "CONNECT" | Establishes a tunnel to the server identified by the target resource. |
| PATCH | "PATCH" | Modifies a resource partially. Since: 26.0.0 Model restriction: This API can be used only in the stage model. |
ResponseCode
Enumerates the response codes for an HTTP request.
System capability: SystemCapability.Communication.NetStack
| Name | Value | Description |
|---|---|---|
| OK | 200 | The request is successful. This return code is generally used for GET and POST requests. Atomic service API: This API can be used in atomic services since API version 11. |
| CREATED | 201 | "Created." The request has been successfully sent and a new resource is created. Atomic service API: This API can be used in atomic services since API version 11. |
| ACCEPTED | 202 | "Accepted." The request has been accepted for processing, but the processing has not been completed. Atomic service API: This API can be used in atomic services since API version 11. |
| NOT_AUTHORITATIVE | 203 | "Non-Authoritative Information." The request is successful. Atomic service API: This API can be used in atomic services since API version 11. |
| NO_CONTENT | 204 | "No Content." The server has successfully fulfilled the request but there is no additional content to send in the response payload body. Atomic service API: This API can be used in atomic services since API version 11. |
| RESET | 205 | "Reset Content." The server has successfully fulfilled the request and desires that the user agent reset the content. Atomic service API: This API can be used in atomic services since API version 11. |
| PARTIAL | 206 | "Partial Content." The server has successfully fulfilled the partial GET request for a given resource. Atomic service API: This API can be used in atomic services since API version 11. |
| MULT_CHOICE | 300 | "Multiple Choices." The requested resource corresponds to any one of a set of representations. Atomic service API: This API can be used in atomic services since API version 11. |
| MOVED_PERM | 301 | "Moved Permanently." The requested resource has been assigned a new permanent URI and any future references to this resource will be redirected to this URI. Atomic service API: This API can be used in atomic services since API version 11. |
| MOVED_TEMP | 302 | "Moved Temporarily." The requested resource is moved temporarily to a different URI. Atomic service API: This API can be used in atomic services since API version 11. |
| SEE_OTHER | 303 | "See Other." The response to the request can be found under a different URI. Atomic service API: This API can be used in atomic services since API version 11. |
| NOT_MODIFIED | 304 | "Not Modified." The client has performed a conditional GET request and access is allowed, but the content has not been modified. Atomic service API: This API can be used in atomic services since API version 11. |
| USE_PROXY | 305 | "Use Proxy." The requested resource can only be accessed through the proxy. Atomic service API: This API can be used in atomic services since API version 11. |
| BAD_REQUEST | 400 | "Bad Request." The request could not be understood by the server due to incorrect syntax. Atomic service API: This API can be used in atomic services since API version 11. |
| UNAUTHORIZED | 401 | "Unauthorized." The request requires user authentication. Atomic service API: This API can be used in atomic services since API version 11. |
| PAYMENT_REQUIRED | 402 | "Payment Required." This code is reserved for future use. Atomic service API: This API can be used in atomic services since API version 11. |
| FORBIDDEN | 403 | "Forbidden." The server understands the request but refuses to process it. Atomic service API: This API can be used in atomic services since API version 11. |
| NOT_FOUND | 404 | "Not Found." The server does not find anything matching the Request-URI. Atomic service API: This API can be used in atomic services since API version 11. |
| BAD_METHOD | 405 | "Method Not Allowed." The method specified in the request is not allowed for the resource identified by the Request-URI. Atomic service API: This API can be used in atomic services since API version 11. |
| NOT_ACCEPTABLE | 406 | "Not Acceptable." The server cannot fulfill the request according to the content characteristics of the request. Atomic service API: This API can be used in atomic services since API version 11. |
| PROXY_AUTH | 407 | "Proxy Authentication Required." The request requires user authentication with the proxy. Atomic service API: This API can be used in atomic services since API version 11. |
| CLIENT_TIMEOUT | 408 | "Request Timeout." The client fails to generate a request within the timeout period. Atomic service API: This API can be used in atomic services since API version 11. |
| CONFLICT | 409 | "Conflict." The request cannot be fulfilled due to a conflict with the current state of the resource. Conflicts are most likely to occur in response to a PUT request. Atomic service API: This API can be used in atomic services since API version 11. |
| GONE | 410 | "Gone." The requested resource has been deleted permanently and is no longer available. Atomic service API: This API can be used in atomic services since API version 11. |
| LENGTH_REQUIRED | 411 | "Length Required." The server refuses to process the request without a defined Content-Length. Atomic service API: This API can be used in atomic services since API version 11. |
| PRECON_FAILED | 412 | "Precondition Failed." The precondition in the request is incorrect. Atomic service API: This API can be used in atomic services since API version 11. |
| ENTITY_TOO_LARGE | 413 | "Request Entity Too Large." The server refuses to process a request because the request entity is larger than the server is able to process. Atomic service API: This API can be used in atomic services since API version 11. |
| REQ_TOO_LONG | 414 | "Request-URI Too Long." The Request-URI is too long for the server to process. Atomic service API: This API can be used in atomic services since API version 11. |
| UNSUPPORTED_TYPE | 415 | "Unsupported Media Type." The server is unable to process the media format in the request. Atomic service API: This API can be used in atomic services since API version 11. |
| RANGE_NOT_SATISFIABLE12+ | 416 | "Range Not Satisfiable." The server cannot serve the requested ranges. Atomic service API: This API can be used in atomic services since API version 12. |
| INTERNAL_ERROR | 500 | "Internal Server Error." The server encounters an unexpected error that prevents it from fulfilling the request. Atomic service API: This API can be used in atomic services since API version 11. |
| NOT_IMPLEMENTED | 501 | "Not Implemented." The server does not support the function required to fulfill the request. Atomic service API: This API can be used in atomic services since API version 11. |
| BAD_GATEWAY | 502 | "Bad Gateway." The server acting as a gateway or proxy receives an invalid response from the upstream server. Atomic service API: This API can be used in atomic services since API version 11. |
| UNAVAILABLE | 503 | "Service Unavailable." The server is currently unable to process the request due to a temporary overload or system maintenance. Atomic service API: This API can be used in atomic services since API version 11. |
| GATEWAY_TIMEOUT | 504 | "Gateway Timeout." The server acting as a gateway or proxy does not receive requests from the remote server within the timeout period. Atomic service API: This API can be used in atomic services since API version 11. |
| VERSION | 505 | The server does not support the HTTP protocol version used in the client request. Atomic service API: This API can be used in atomic services since API version 11. |
HttpResponse
Defines the response to an HTTP request.
System capability: SystemCapability.Communication.NetStack
| Name | Type | Read Only | Optional | Description |
|---|---|---|---|---|
| result | string | Object | ArrayBuffer | No | No | Response content returned based on Content-type in the response header. If HttpRequestOptions does not contain the expectDataType field, the response content is returned according to the following rules: - application/json: string in JSON format - application/octet-stream: ArrayBuffer - image: ArrayBuffer - Others: string If HttpRequestOptions contains the expectDataType field, the response content must be of the same type as the data returned by the server. Atomic service API: This API can be used in atomic services since API version 11. |
| resultType9+ | HttpDataType | No | No | Type of the return value. Atomic service API: This API can be used in atomic services since API version 11. |
| responseCode | ResponseCode | number | No | No | Result code for an HTTP request. If the callback function is successfully executed, a result code defined in ResponseCode will be returned. Otherwise, an error code will be returned in the err field in AsyncCallback. Atomic service API: This API can be used in atomic services since API version 11. |
| header | Object | No | No | Response header. The return value is a string in JSON format. If you want to use specific content in the response, you need to implement parsing of that content. Common fields and parsing methods are as follows: - content-type: header['content-type'] - status-line: header['status-line'] - date: header.date/header['date'] - server: header.server/header['server'] Atomic service API: This API can be used in atomic services since API version 11. |
| cookies8+ | string | No | No | Original cookies returned by the server. How to process the cookies is up to your decision. Atomic service API: This API can be used in atomic services since API version 11. |
| performanceTiming11+ | PerformanceTiming | No | No | Time consumed in each phase of an HTTP request. |
| connectionExtraInfo24+ | ConnectionExtraInfo | No | Yes | Detailed information about the HTTP request interaction. |
ClientCert11+
Defines the client certificate type.
System capability: SystemCapability.Communication.NetStack
| Name | Type | Read Only | Optional | Description |
|---|---|---|---|---|
| certPath | string | No | No | Path of the certificate file. |
| certType | CertType | No | Yes | Certificate type. The default value is PEM. |
| keyPath | string | No | No | Path of the certificate key file. |
| keyPassword | string | No | Yes | Password of the certificate key file. The default value is an empty string. |
PerformanceTiming11+
Configures the timing for performance tracing, in ms.
System capability: SystemCapability.Communication.NetStack
| Name | Type | Read Only | Optional | Description |
|---|---|---|---|---|
| dnsTiming | number | No | No | Duration from the time when the request is sent to the time when the DNS resolution is complete. |
| tcpTiming | number | No | No | Duration from the time when the request is sent to the time when the TCP connection is complete. |
| tlsTiming | number | No | No | Duration from the time when the request is sent to the time when the TLS connection is complete. |
| firstSendTiming | number | No | No | Duration from the time when the request is sent to the time when the first byte is sent. |
| firstReceiveTiming | number | No | No | Duration from the time when the request is sent to the time when the first byte is received. |
| totalFinishTiming | number | No | No | Duration from the time when the request is sent to the time when the request is complete. |
| redirectTiming | number | No | No | Duration from the time when the request is sent to the time when all redirection steps are complete. |
| responseHeaderTiming | number | No | No | Duration from the time when the request is sent to the time when the header resolution is complete. |
| responseBodyTiming | number | No | No | Duration from the time when the request is sent to the time when the body resolution is complete. |
| totalTiming | number | No | No | Duration from the time when the request is sent to the time when a callback is returned to the application. |
ConnectionExtraInfo24+
Defines the detailed information about the HTTP request interaction.
System capability: SystemCapability.Communication.NetStack
Model constraint: This API can be used only in the stage model.
| Name | Type | Read Only | Optional | Description |
|---|---|---|---|---|
| networkProtocolName | string | No | No | HTTP version used in the request, for example, 'HTTP/1.0', 'HTTP/1.1', 'HTTP/2', 'HTTP/2 over TLS', 'HTTP/3', or 'Unknown/Non-HTTP'. |
| tlsVersion | TlsVersion | No | Yes | TLS version used in the request. It is returned only when the TLS protocol is used. |
| cipherSuite | CipherSuite | No | Yes | Cipher suite used in the request. It is returned only when the TLS protocol is used. |
| localAddress | string | No | No | IP address of the client in the request process. |
| remoteAddress | string | No | No | IP address of the server in the request process. |
| localPort | number | No | No | Port number of the client in the request process. The value ranges from 1 to 65535. |
| remotePort | number | No | No | Port number of the server in the request process. The value ranges from 1 to 65535. |
| isReusedConnection | boolean | No | No | Whether to reuse the connection in the request process. true: yes; false: no. |
| isProxyConnection | boolean | No | No | Whether to use a proxy in the request process. true: yes; false: no. |
| isCacheHit | boolean | No | No | Whether the local cache is hit in the request process. true: yes; false: no. |
| redirectCount | number | No | No | Number of redirections in the request process. |
DataReceiveProgressInfo11+
Defines the data receiving progress information.
Atomic service API: This API can be used in atomic services since API version 15.
System capability: SystemCapability.Communication.NetStack
| Name | Type | Read Only | Optional | Description |
|---|---|---|---|---|
| receiveSize | number | No | No | Amount of data that has been received, in bytes. |
| totalSize | number | No | No | Amount of data to be received, in bytes. |
DataSendProgressInfo11+
Defines the data sending progress information.
Atomic service API: This API can be used in atomic services since API version 15.
System capability: SystemCapability.Communication.NetStack
Attributes
| Name | Type | Read Only | Optional | Description |
|---|---|---|---|---|
| sendSize | number | No | No | Amount of data to be sent each time, in bytes. |
| totalSize | number | No | No | Amount of data to be sent, in bytes. |
MultiFormData11+
Defines the type of multi-form data.
System capability: SystemCapability.Communication.NetStack
| Name | Type | Read Only | Optional | Description |
|---|---|---|---|---|
| name | string | No | No | Data name. |
| contentType | string | No | No | Data type, for example, text/plain, image/png, image/jpeg, audio/mpeg, or video/mp4. |
| remoteFileName | string | No | Yes | Name of the file uploaded to the server. Note: If this field is specified, the filename field is added to the request header, indicating the name of the file uploaded to the server. (1) If the data to be uploaded is a file and the file content is specified via the data field, the remoteFileName field usually needs to be set to specify the name of the file to be uploaded to the server (the actual result depends on the server). If the file path is specified via the filePath field, the filename field will be automatically added to the request header. Its default value is the file name in the filePath field. If a different name is required, it can also be changed via this field. (2) When the data to be uploaded is in binary format, the remoteFileName field must be set. |
| data | string | Object | ArrayBuffer | No | Yes | Form data content. |
| filePath | string | No | Yes | File path of the form data. If data is not specified, filePath must be set. Note: The file format supported by the file management module must be passed. You can call access to check whether the file exists and is accessible. |
http.createHttpResponseCache9+
createHttpResponseCache(cacheSize?: number): HttpResponseCache
Creates an HttpResponseCache object that stores the response data of HTTP requests. You can call flush and delete in the object.
Atomic service API: This API can be used in atomic services since API version 11.
System capability: SystemCapability.Communication.NetStack
Parameters
| Name | Type | Mandatory | Description |
|---|---|---|---|
| cacheSize | number | No | Cache size. The maximum value is 10*1024*1024 (10 MB). The maximum value is used by default. |
Return value
| Type | Description |
|---|---|
| HttpResponseCache | Object that stores the response to the HTTP request. |
Example
import { http } from '@kit.NetworkKit';
let httpResponseCache = http.createHttpResponseCache();
HttpResponseCache9+
Defines an object that stores the response to an HTTP request. Before invoking APIs provided by HttpResponseCache, you must call createHttpResponseCache() to create an HttpRequestTask object.
Usage of Keywords in the Response Header
-
Cache-Control: specifies the cache policy, for example,no-cache,no-store,max-age,public, orprivate. -
Expires: specifies the expiration time of a resource. The value is in the GMT format. -
ETag: identifies the resource version. The client can use theIf-None-Matchrequest header to check whether the resource has been modified. -
Last-Modified: specifies the last modification time of a resource. The client can use theIf-Modified-Sincerequest header to check whether a resource has been modified. -
Vary: specifies the parts of the request header that affect the cached response. This field is used to distinguish different cache versions.
When using these keywords, ensure that the response header is correctly configured on the server. The client determines whether to use the cached resource and how to verify whether the resource is the latest based on the response header. Correct cache policies help to improve application performance and user experience.
How to Set the Cache-Control Header
Cache-Control is a common header, but it is usually used on the server. It allows you to define when, how, and how long a response should be cached. The following are some common Cache-Control directives:
-
no-cache: indicates that the response can be stored in the cache, but it must be verified with the origin server before each reuse. If the resource remains unchanged, the response status code is 304 (Not Modified). In this case, the resource content is not sent, and the resource in the cache is used. If the resource has expired, the response status code is 200 and the resource content is sent. -
no-store: indicates that resources cannot be cached. Resources must be obtained from the server for each request. -
max-age: specifies the maximum cache duration, in seconds. For example,Cache-Control: max-age=3600indicates that the valid cache duration is 3,600 seconds (that is, 1 hour). -
public: indicates that the response can be cached by any object, for example, the client that sends the request or the proxy server. -
private: indicates that the response can be cached only by a single user and cannot be used as a shared cache (that is, the response cannot be cached by the proxy server). -
must-revalidate: indicates that a resource must be revalidated with the origin server once it has become stable. -
no-transform: indicates that the proxy server is not allowed to modify the response content. -
proxy-revalidate: works in a way similar tomust-revalidate, but applies only to shared caches. -
s-maxage: works in a way similar tomax-age, but applies only to shared caches.
flush9+
flush(callback: AsyncCallback<void>): void
Flushes data in the cache to the file system so that the cached data can be accessed in the next HTTP request. This API uses an asynchronous callback to return the result. Cached data includes the response header (header), response body (result), cookies, request time (requestTime), and response time (responseTime).
Atomic service API: This API can be used in atomic services since API version 11.
System capability: SystemCapability.Communication.NetStack
Parameters
| Name | Type | Mandatory | Description |
|---|---|---|---|
| callback | AsyncCallback<void> | Yes | Callback used to return the result. If the operation is successful, err is undefined; otherwise, err is an error object. |
Example
import { http } from '@kit.NetworkKit';
import { BusinessError } from '@kit.BasicServicesKit';
let httpResponseCache = http.createHttpResponseCache();
let httpRequest = http.createHttp();
httpRequest.request("EXAMPLE_URL", (err: BusinessError, data: http.HttpResponse) => {
if (!err) {
httpResponseCache.flush((err: BusinessError) => {
if (err) {
console.error('flush fail');
}
console.info('flush success');
});
httpRequest.destroy();
} else {
console.error('error:' + JSON.stringify(err));
// Call destroy() to release resources when the request is no longer needed, preventing memory leaks.
httpRequest.destroy();
}
});
flush9+
flush(): Promise<void>
Flushes data in the cache to the file system so that the cached data can be accessed in the next HTTP request. This API uses a promise to return the result.
Atomic service API: This API can be used in atomic services since API version 11.
System capability: SystemCapability.Communication.NetStack
Return value
| Type | Description |
|---|---|
| Promise<void> | Promise that returns no value. |
Example
import { http } from '@kit.NetworkKit';
import { BusinessError } from '@kit.BasicServicesKit';
let httpRequest = http.createHttp();
let httpResponseCache = http.createHttpResponseCache();
let promise = httpRequest.request("EXAMPLE_URL");
promise.then((data: http.HttpResponse) => {
httpResponseCache.flush().then(() => {
console.error('flush success');
}).catch((err: BusinessError) => {
console.error('flush fail');
});
}).catch((err: Error) => {
console.error('error:' + JSON.stringify(err));
});
delete9+
delete(callback: AsyncCallback<void>): void
Disables the cache and deletes the data in it. This API uses an asynchronous callback to return the result.
Atomic service API: This API can be used in atomic services since API version 11.
System capability: SystemCapability.Communication.NetStack
Parameters
| Name | Type | Mandatory | Description |
|---|---|---|---|
| callback | AsyncCallback<void> | Yes | Callback used to return the result. If the operation is successful, err is undefined. Otherwise, err is an error object. |
Example
import { http } from '@kit.NetworkKit';
import { BusinessError } from '@kit.BasicServicesKit';
let httpRequest = http.createHttp();
httpRequest.request("EXAMPLE_URL").then(data => {
const httpResponseCache = http.createHttpResponseCache();
httpResponseCache.delete((err: BusinessError) => {
try {
if (err) {
console.error('fail: ' + err);
} else {
console.info('success');
}
} catch (err) {
console.error('error: ' + err);
}
});
httpRequest.destroy();
}).catch((error: BusinessError) => {
console.error("errcode" + JSON.stringify(error));
});
delete9+
delete(): Promise<void>
Disables the cache and deletes the data in it. This API uses a promise to return the result.
Atomic service API: This API can be used in atomic services since API version 11.
System capability: SystemCapability.Communication.NetStack
Return value
| Type | Description |
|---|---|
| Promise<void> | Promise that returns no value. |
Example
import { http } from '@kit.NetworkKit';
import { BusinessError } from '@kit.BasicServicesKit';
let httpRequest = http.createHttp();
httpRequest.request("EXAMPLE_URL").then(data => {
const httpResponseCache = http.createHttpResponseCache();
httpResponseCache.delete().then(() => {
console.info("success");
}).catch((err: BusinessError) => {
console.error("fail");
});
httpRequest.destroy();
}).catch((error: BusinessError) => {
console.error("errcode" + JSON.stringify(error));
});
HttpDataType9+
Enumerates HTTP data types.
Atomic service API: This API can be used in atomic services since API version 11.
System capability: SystemCapability.Communication.NetStack
| Name | Value | Description |
|---|---|---|
| STRING | 0 | String type. |
| OBJECT | 1 | Object type. |
| ARRAY_BUFFER | 2 | Binary array type. |
HttpProtocol9+
Enumerates HTTP protocol versions.
System capability: SystemCapability.Communication.NetStack
| Name | Value | Description |
|---|---|---|
| HTTP1_1 | 0 | HTTP1.1. Atomic service API: This API can be used in atomic services since API version 11. |
| HTTP2 | 1 | HTTP2. Atomic service API: This API can be used in atomic services since API version 11. |
| HTTP311+ | 2 | HTTP3. If the system or server does not support HTTP3, the HTTP protocol of an earlier version is used. Note: This parameter takes effect only for HTTPS URLs. If this parameter is set to HTTP, the request will fail. |
CertType11+
Enumerates certificate types.
System capability: SystemCapability.Communication.NetStack
| Name | Value | Description |
|---|---|---|
| PEM | PEM | PEM certificate. |
| DER | DER | DER certificate. |
| P12 | P12 | P12 certificate. |
CertificatePinning12+
Defines the dynamic configuration of certificate pinning.
System capability: SystemCapability.Communication.NetStack
| Name | Type | Read Only | Optional | Description |
|---|---|---|---|---|
| publicKeyHash | string | No | No | Certificate PIN of the string type. |
| hashAlgorithm | 'SHA-256' | No | No | Encryption algorithm. Currently, only SHA-256 is supported. |
HttpProxy10+
type HttpProxy = connection.HttpProxy
Defines the network proxy configuration.
Atomic service API: This API can be used in atomic services since API version 11.
System capability: SystemCapability.Communication.NetStack
| Type | Description |
|---|---|
| connection.HttpProxy | Network proxy configuration. |
QueryParamValue
type QueryParamValue = string | number | boolean | null | undefined
Defines the single-value type that can be used in QueryParamObject.
Since: 26.0.0
System capability: SystemCapability.Communication.NetStack
Model restriction: This API can be used only in the stage model.
| Type | Description |
|---|---|
| string | number | boolean | null | undefined | Single-value type of the query parameter. The number and boolean values are converted into strings before being encoded. The null and undefined values are serialized in the format of only the key without the = value. |
QueryParamObject
type QueryParamObject = Record<string, QueryParamValue | QueryParamValue[]>
Defines the key-value object type used to construct URL query parameters.
Since: 26.0.0
System capability: SystemCapability.Communication.NetStack
Model restriction: This API can be used only in the stage model.
NOTE
(1) The property name is used as the key of the QueryParamObject parameter. The corresponding property value can be a single QueryParamValue or a QueryParamValue array.
(2) The array will be expanded into multiple parameters with the same name. For example, { tag: ['a', 'b'] } will be serialized into tag=a&tag=b.
(3) The key and value are automatically URL-encoded by the system. You should pass the original, unencoded content.
(4) To strictly control the parameter sequence or repeat the key sequence, you are advised to use the string of queryParams.
AddressFamily15+
Enumerates IP address families of the target domain name.
System capability: SystemCapability.Communication.NetStack
| Name | Value | Description |
|---|---|---|
| DEFAULT | CURL_IPRESOLVE_WHATEVER | Automatically selects the IPv4 or IPv6 address of the target domain name. |
| ONLY_V4 | CURL_IPRESOLVE_V4 | Resolves only the IPv4 address of the target domain name and ignores the IPv6 address. |
| ONLY_V6 | CURL_IPRESOLVE_V6 | Resolves only the IPv6 address of the target domain name and ignores the IPv4 address. |
Credential18+
Represents the credential used for server identity verification in a session, including the user name and password.
Atomic service API: This API can be used in atomic services since API version 18.
System capability: SystemCapability.Communication.NetStack
| Name | Type | Read Only | Optional | Description |
|---|---|---|---|---|
| username | string | No | No | User name used for verification. The default value is ''. |
| password | string | No | No | Password used for verification. The default value is ''. |
ServerAuthentication18+
Defines HTTP server identity verification information.
Atomic service API: This API can be used in atomic services since API version 18.
System capability: SystemCapability.Communication.NetStack
| Name | Type | Read Only | Optional | Description |
|---|---|---|---|---|
| credential | Credential | No | No | Server credential. The default value is undefined. |
| authenticationType | AuthenticationType | No | Yes | Server identity verification type. If the type is not set, negotiation with the server is required. |
TlsConfig18+
Defines the TLS configuration, including the version and cipher suite.
Atomic service API: This API can be used in atomic services since API version 18.
System capability: SystemCapability.Communication.NetStack
| Name | Type | Read Only | Optional | Description |
|---|---|---|---|---|
| tlsVersionMin | TlsVersion | No | No | Earliest TLS version. |
| tlsVersionMax | TlsVersion | No | No | Latest TLS version. |
| cipherSuites | CipherSuite[] | No | Yes | Array of cipher suite types. If no cipher suite type is set, all supported cipher suite types are carried by default. For details about the cipher suite types, see TlsV13SpecificCipherSuite, TlsV12SpecificCipherSuite and TlsV10SpecificCipherSuite. |
TlsVersion18+
Enumerates TLS versions.
Atomic service API: This API can be used in atomic services since API version 18.
System capability: SystemCapability.Communication.NetStack
| Name | Value | Description |
|---|---|---|
| TLS_V_1_0 | 4 | TLS version 1.0. |
| TLS_V_1_1 | 5 | TLS version 1.1. |
| TLS_V_1_2 | 6 | TLS version 1.2. |
| TLS_V_1_3 | 7 | TLS version 1.3. |
TlsOptions18+
type TlsOptions = 'system' | TlsConfig
Defines the TLS configuration.
Atomic service API: This API can be used in atomic services since API version 18.
System capability: SystemCapability.Communication.NetStack
| Type | Description |
|---|---|
| 'system' | TLS version of the system. This field is defaulted to system when the value is not set. |
| TlsConfig | Custom TLS version and cipher suites. |
RemoteValidation18+
type RemoteValidation = 'system' | 'skip'
Enumerates the identity verification modes of the remote server.
Atomic service API: This API can be used in atomic services since API version 18.
System capability: SystemCapability.Communication.NetStack
| Type | Description |
|---|---|
| 'system' | Use of the system CA. This field is defaulted to system when the value is not set. |
| 'skip' | Skipping of CA verification. This field has a fixed value of skip. |
AuthenticationType18+
type AuthenticationType = 'basic' | 'ntlm' | 'digest'
Enumerates server authentication modes in a session.
Atomic service API: This API can be used in atomic services since API version 18.
System capability: SystemCapability.Communication.NetStack
| Type | Description |
|---|---|
| 'basic' | Basic authentication mode. This field has a fixed value of basic. |
| 'ntlm' | NTLM authentication mode. This field has a fixed value of ntlm. |
| 'digest' | Digest authentication mode. This field has a fixed value of digest. |
CipherSuite18+
type CipherSuite = TlsV13CipherSuite
Declares the cipher suite.
Atomic service API: This API can be used in atomic services since API version 18.
System capability: SystemCapability.Communication.NetStack
| Type | Description |
|---|---|
| TlsV13CipherSuite | Cipher suite defined in TlsV13CipherSuite. |
TlsV13CipherSuite18+
type TlsV13CipherSuite = TlsV12CipherSuite | TlsV13SpecificCipherSuite
Declares the cipher suite for TLS 1.3, which is also compatible with TLS 1.2.
Atomic service API: This API can be used in atomic services since API version 18.
System capability: SystemCapability.Communication.NetStack
| Type | Description |
|---|---|
| TlsV12CipherSuite | TlsV11CipherSuite. |
| TlsV13SpecificCipherSuite | TlsV13SpecificCipherSuite. |
TlsV12CipherSuite18+
type TlsV12CipherSuite = TlsV11CipherSuite | TlsV12SpecificCipherSuite
Declares the cipher suite for TLS 1.2, which is also compatible with TLS 1.1.
Atomic service API: This API can be used in atomic services since API version 18.
System capability: SystemCapability.Communication.NetStack
| Type | Description |
|---|---|
| TlsV11CipherSuite | TlsV11CipherSuite. |
| TlsV12SpecificCipherSuite | TlsV12SpecificCipherSuite. |
TlsV11CipherSuite18+
type TlsV11CipherSuite = TlsV10CipherSuite
Declares the cipher suite for TLS 1.1, which is the same as that for TLS1.0.
Atomic service API: This API can be used in atomic services since API version 18.
System capability: SystemCapability.Communication.NetStack
| Type | Description |
|---|---|
| TlsV10CipherSuite | TlsV10CipherSuite. |
TlsV10CipherSuite18+
type TlsV10CipherSuite = TlsV10SpecificCipherSuite
Declares the cipher suite for TLS 1.0.
Atomic service API: This API can be used in atomic services since API version 18.
System capability: SystemCapability.Communication.NetStack
| Type | Description |
|---|---|
| TlsV10SpecificCipherSuite | TlsV10SpecificCipherSuite. |
TlsV13SpecificCipherSuite18+
type TlsV13SpecificCipherSuite = 'TLS_AES_128_GCM_SHA256' | 'TLS_AES_256_GCM_SHA384' | 'TLS_CHACHA20_POLY1305_SHA256'
Enumerates cipher suites supported by TLS 1.3 or later.
Atomic service API: This API can be used in atomic services since API version 18.
System capability: SystemCapability.Communication.NetStack
| Type | Description |
|---|---|
| 'TLS_AES_128_GCM_SHA256' | Supported cipher suite: TLS_AES_128_GCM_SHA256. The value is a string. |
| 'TLS_AES_256_GCM_SHA384' | Supported cipher suite: TLS_AES_256_GCM_SHA384. The value is a string. |
| 'TLS_CHACHA20_POLY1305_SHA256' | Supported cipher suite: TLS_CHACHA20_POLY1305_SHA256. The value is a string. |
TlsV12SpecificCipherSuite18+
type TlsV12SpecificCipherSuite = 'TLS_ECDHE_ECDSA_WITH_AES_128_GCM_SHA256' | 'TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256' | 'TLS_ECDHE_ECDSA_WITH_AES_256_GCM_SHA384' | 'TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384' | 'TLS_ECDHE_ECDSA_WITH_CHACHA20_POLY1305_SHA256' | 'TLS_ECDHE_RSA_WITH_CHACHA20_POLY1305_SHA256' | 'TLS_RSA_WITH_AES_128_GCM_SHA256' | 'TLS_RSA_WITH_AES_256_GCM_SHA384'
Enumerates cipher suites supported by TLS 1.2 or later.
Atomic service API: This API can be used in atomic services since API version 18.
System capability: SystemCapability.Communication.NetStack
| Type | Description |
|---|---|
| 'TLS_ECDHE_ECDSA_WITH_AES_128_GCM_SHA256' | Supported cipher suite: TLS_ECDHE_ECDSA_WITH_AES_128_GCM_SHA256. The value is a string. |
| 'TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256' | Supported cipher suite: TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256. The value is a string. |
| 'TLS_ECDHE_ECDSA_WITH_AES_256_GCM_SHA384' | Supported cipher suite: TLS_ECDHE_ECDSA_WITH_AES_256_GCM_SHA384. The value is a string. |
| 'TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384' | Supported cipher suite: TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384. The value is a string. |
| 'TLS_ECDHE_ECDSA_WITH_CHACHA20_POLY1305_SHA256' | Supported cipher suite: TLS_ECDHE_ECDSA_WITH_CHACHA20_POLY1305_SHA256. The value is a string. |
| 'TLS_ECDHE_RSA_WITH_CHACHA20_POLY1305_SHA256' | Supported cipher suite: TLS_ECDHE_RSA_WITH_CHACHA20_POLY1305_SHA256. The value is a string. |
| 'TLS_RSA_WITH_AES_128_GCM_SHA256' | Supported cipher suite: TLS_RSA_WITH_AES_128_GCM_SHA256. The value is a string. |
| 'TLS_RSA_WITH_AES_256_GCM_SHA384' | Supported cipher suite: TLS_RSA_WITH_AES_256_GCM_SHA384. The value is a string. |
TlsV10SpecificCipherSuite18+
type TlsV10SpecificCipherSuite = 'TLS_ECDHE_ECDSA_WITH_AES_128_CBC_SHA' | 'TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA' | 'TLS_ECDHE_ECDSA_WITH_AES_256_CBC_SHA' | 'TLS_ECDHE_RSA_WITH_AES_256_CBC_SHA' | 'TLS_RSA_WITH_AES_128_CBC_SHA' | 'TLS_RSA_WITH_AES_256_CBC_SHA' | 'TLS_RSA_WITH_3DES_EDE_CBC_SHA'
Enumerates cipher suites supported by TLS 1.0 or later.
Atomic service API: This API can be used in atomic services since API version 18.
System capability: SystemCapability.Communication.NetStack
| Type | Description |
|---|---|
| 'TLS_ECDHE_ECDSA_WITH_AES_128_CBC_SHA' | Supported cipher suite: TLS_ECDHE_ECDSA_WITH_AES_128_CBC_SHA. The value is a string. |
| 'TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA' | Supported cipher suite: TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA. The value is a string. |
| 'TLS_ECDHE_ECDSA_WITH_AES_256_CBC_SHA' | Supported cipher suite: TLS_ECDHE_ECDSA_WITH_AES_256_CBC_SHA. The value is a string. |
| 'TLS_ECDHE_RSA_WITH_AES_256_CBC_SHA' | Supported cipher suite: TLS_ECDHE_RSA_WITH_AES_256_CBC_SHA. The value is a string. |
| 'TLS_RSA_WITH_AES_128_CBC_SHA' | Supported cipher suite: TLS_RSA_WITH_AES_128_CBC_SHA. The value is a string. |
| 'TLS_RSA_WITH_AES_256_CBC_SHA' | Supported cipher suite: TLS_RSA_WITH_AES_256_CBC_SHA. The value is a string. |
| 'TLS_RSA_WITH_3DES_EDE_CBC_SHA' | Supported cipher suite: TLS_RSA_WITH_3DES_EDE_CBC_SHA. The value is a string. |
SslType20+
type SslType = 'TLS' | 'TLCP'
Defines the secure communications protocol.
Atomic service API: This API can be used in atomic services since API version 20.
System capability: SystemCapability.Communication.NetStack
| Type | Description |
|---|---|
| 'TLS' | TLS protocol. The value is fixed to TLS. |
| 'TLCP' | TLCP protocol. The value is fixed to TLCP. NOTE (1) The certificate supports the following string specifications: - UTF8String (English character set) - PrintableString - IA5String Supported since API Version 22: - TeletexString (2) The certificate supports the following extended specifications: - BasicConstraints (OID 2.5.29.19) - KeyUsage (OID2.5.29.15) - SubjectKeyIdentifier (OID2.5.29.14) - AuthorityKeyIdentifier (OID2.5.29.35) Supported since API Version 22: - SubjectAltName (OID 2.5.29.17) - ExtendedKeyUsage (OID 2.5.29.37) |
InterceptorType22+
Enumerates the types of HTTP interceptors.
Atomic service API: This API can be used in atomic services since API version 22.
System capability: SystemCapability.Communication.NetStack
| Name | Value | Description |
|---|---|---|
| INITIAL_REQUEST | 'INITIAL_REQUEST' | Intercepts after the initial HTTP request is assembled. |
| REDIRECTION | 'REDIRECTION' | Intercepts when a redirection response is received. |
| CACHE_CHECKED | 'READ_CACHE' | Intercepts when the HTTP cache is checked and hit. |
| NETWORK_CONNECT | 'CONNECT_NETWORK' | Intercepts before the network request is sent. |
| FINAL_RESPONSE | 'FINAL_RESPONSE' | Intercepts when the final HTTP response is obtained. |
HttpRequestContext22+
Defines HTTP request context data. The object instance is passed as a parameter in the interceptorHandle method of the interceptor. You can use this object to obtain and modify the information about the HTTP request.
Atomic service API: This API can be used in atomic services since API version 22.
System capability: SystemCapability.Communication.NetStack
Attributes
| Name | Type | Read Only | Optional | Description |
|---|---|---|---|---|
| url | string | No | No | URL obtained by the HTTP interceptor from the HTTP request, which can be modified in the interceptor. |
| header | Object | No | No | Request header obtained by the HTTP interceptor from the HTTP request, which can be modified in the interceptor. |
| body | Object | No | No | Request body obtained by the HTTP interceptor from the HTTP request, which can be modified in the interceptor. |
ChainContinue22+
type ChainContinue = boolean
Specifies whether to continue to process the interceptor chain.
Atomic service API: This API can be used in atomic services since API version 22.
System capability: SystemCapability.Communication.NetStack
| Type | Description |
|---|---|
| boolean | The value true indicates that the interceptor chain continues to be processed, and the value false indicates that the interceptor chain is terminated and an HTTP response is returned. |
HttpInterceptor22+
Defines the HTTP interceptor API, which is used to define the interception processing function.
Atomic service API: This API can be used in atomic services since API version 22.
System capability: SystemCapability.Communication.NetStack
Attributes
| Name | Type | Read Only | Optional | Description |
|---|---|---|---|---|
| interceptorType | InterceptorType | No | No | Interceptor type, which defines when the interceptor is called. |
interceptorHandle22+
interceptorHandle(reqContext: HttpRequestContext, rspContext: HttpResponse): Promise<ChainContinue>
Intercepts the HTTP processing and modifies it as required.
Atomic service API: This API can be used in atomic services since API version 22.
System capability: SystemCapability.Communication.NetStack
Parameters
| Name | Type | Mandatory | Description |
|---|---|---|---|
| reqContext | HttpRequestContext | Yes | Context of the request parameters passed through the HTTP interceptor. |
| rspContext | HttpResponse | Yes | Context of the return result passed through the HTTP interceptor. |
Return value
| Type | Description |
|---|---|
| Promise<ChainContinue> | Continues the HTTP processing or stops and returns an HTTP response. |
Example
import { http } from '@kit.NetworkKit';
// Create a custom interceptor.
class CustomInterceptor implements http.HttpInterceptor {
interceptorType: http.InterceptorType = http.InterceptorType.INITIAL_REQUEST;
async interceptorHandle(reqContext: http.HttpRequestContext, rspContext: http.HttpResponse): Promise<http.ChainContinue> {
// Add the authentication header in the initial request phase.
reqContext.header['Authorization'] = 'Bearer token';
console.info('Interceptor: Added authorization header');
return true; // Continue to process the interceptor chain.
}
}
let customInterceptor = new CustomInterceptor();
HttpInterceptorChain22+
Defines HTTP interceptor chain.
Atomic service API: This API can be used in atomic services since API version 22.
System capability: SystemCapability.Communication.NetStack
Example
import { http } from '@kit.NetworkKit';
let interceptorChain = new http.HttpInterceptorChain();
addChain22+
addChain(chain: HttpInterceptor[]): boolean
Adds an interceptor to the HTTP client.
NOTE
An interceptor chain cannot contain interceptor instances of the same type. If interceptors of the same type are passed in, the error code 2300802 (Duplicated interceptor type in the chain) is reported.
Atomic service API: This API can be used in atomic services since API version 22.
System capability: SystemCapability.Communication.NetStack
Parameters
| Name | Type | Mandatory | Description |
|---|---|---|---|
| chain | HttpInterceptor[] | Yes | Interception chain composed of interceptor instances. A single interceptor or multiple interceptors of different types can be passed in. |
Return value
| Type | Description |
|---|---|
| boolean | Whether the interceptor is added successfully. The value true indicates that the interceptor is successfully added, and the value false indicates the opposite. |
Error codes
For details about the error codes, see Common Error Codes and HTTP Error Codes.
The HTTP error code mapping is in the format of 2300000 + Curl error code. For more common error codes, see Curl Error Codes.
| ID | Error Message |
|---|---|
| 2300801 | Parameter type not supported by the interceptor. |
| 2300802 | Duplicated interceptor type in the chain. |
| 2300999 | Internal error. |
Example
import { http } from '@kit.NetworkKit';
// Create an authentication interceptor.
class AuthInterceptor implements http.HttpInterceptor {
interceptorType: http.InterceptorType = http.InterceptorType.INITIAL_REQUEST;
async interceptorHandle(reqContext: http.HttpRequestContext, rspContext: http.HttpResponse): Promise<http.ChainContinue> {
// Add the authentication header in the initial request phase.
reqContext.header['Authorization'] = 'Bearer token';
console.info('Interceptor: Added authorization header');
return true; // Continue to process the interceptor chain.
}
}
class LoggingInterceptor implements http.HttpInterceptor {
interceptorType: http.InterceptorType = http.InterceptorType.FINAL_RESPONSE;
async interceptorHandle(reqContext: http.HttpRequestContext, rspContext: http.HttpResponse): Promise<http.ChainContinue> {
// Record logs in the final response phase.
console.info(`LoggingInterceptor: Request to ${reqContext.url} completed with status ${rspContext.responseCode}`);
return true; // Continue to process the interceptor chain.
}
}
// Create an interceptor chain and apply the interceptor chain to the request.
let interceptorChain = new http.HttpInterceptorChain();
let authInterceptor = new AuthInterceptor();
let loggingInterceptor = new LoggingInterceptor();
// Add the interceptor to the chain.
try {
let success = interceptorChain.addChain([authInterceptor, loggingInterceptor]);
if (!success) {
console.error('Failed to add interceptor chain');
}
} catch (e) {
console.error(`Interceptor chain add failed: code=${e.code}, message=${e.message}`);
}
getChain22+
getChain(): HttpInterceptor[]
Obtains all interceptor instances in the current interceptor chain.
Atomic service API: This API can be used in atomic services since API version 22.
System capability: SystemCapability.Communication.NetStack
Return value
| Type | Description |
|---|---|
| HttpInterceptor[] | Returns all interceptor instances added by the addChain method. |
Example
import { http } from '@kit.NetworkKit';
// Create a custom interceptor.
class CustomInterceptor implements http.HttpInterceptor {
interceptorType: http.InterceptorType = http.InterceptorType.INITIAL_REQUEST;
async interceptorHandle(reqContext: http.HttpRequestContext, rspContext: http.HttpResponse): Promise<http.ChainContinue> {
// Add the authentication header in the initial request phase.
reqContext.header['Authorization'] = 'Bearer token';
console.info('Interceptor: Added authorization header');
return true; // Continue to process the interceptor chain.
}
}
// Create an interceptor chain and apply the interceptor chain to the request.
let interceptorChain = new http.HttpInterceptorChain();
let customInterceptor = new CustomInterceptor();
// Add the interceptor to the chain.
try {
let success = interceptorChain.addChain([customInterceptor]);
if (!success) {
console.error('Failed to add interceptor chain');
}
} catch (e) {
console.error(`Interceptor chain add failed: code=${e.code}, message=${e.message}`);
}
// Obtain all interceptors in the current interceptor chain.
let chain = interceptorChain.getChain();
console.info(`Current interceptor chain has ${chain.length} interceptors`);
apply22+
apply(httpRequest: HttpRequest): boolean
Adds an interceptor chain to the target HTTP request. Each HTTP request instance can have only one interceptor chain attached.
NOTE
After an interceptor chain is attached to an HttpRequest instance, when the instance initiates an HTTP request, interceptors of the corresponding type in the attached interceptor chain are triggered.
For more information about how to trigger interceptors using HTTP requests, see HTTP Interceptor Function Code Example.
The HTTP interceptor feature is supported only by HttpRequest.request APIs, and is not supported by HttpRequest.requestInStream APIs (streaming transmission).
Atomic service API: This API can be used in atomic services since API version 22.
System capability: SystemCapability.Communication.NetStack
Parameters
| Name | Type | Mandatory | Description |
|---|---|---|---|
| httpRequest | HttpRequest | Yes | HttpRequest that initiates an HTTP request. |
Return value
| Type | Description |
|---|---|
| boolean | Whether the interceptor is attached successfully. The value true indicates that the interceptor is successfully added, and the value false indicates the opposite. |
Error codes
For details about the error codes, see Common Error Codes and HTTP Error Codes.
The HTTP error code mapping is in the format of 2300000 + Curl error code. For more common error codes, see Curl Error Codes.
| ID | Error Message |
|---|---|
| 2300801 | Parameter type not supported by the interceptor. |
| 2300999 | Internal error. |
Example
import { http } from '@kit.NetworkKit';
// Create an authentication interceptor.
class AuthInterceptor implements http.HttpInterceptor {
interceptorType: http.InterceptorType = http.InterceptorType.INITIAL_REQUEST;
async interceptorHandle(reqContext: http.HttpRequestContext, rspContext: http.HttpResponse): Promise<http.ChainContinue> {
// Add the authentication header in the initial request phase.
reqContext.header['Authorization'] = 'Bearer token';
console.info('Interceptor: Added authorization header');
return true; // Continue to process the interceptor chain.
}
}
class LoggingInterceptor implements http.HttpInterceptor {
interceptorType: http.InterceptorType = http.InterceptorType.FINAL_RESPONSE;
async interceptorHandle(reqContext: http.HttpRequestContext, rspContext: http.HttpResponse): Promise<http.ChainContinue> {
// Record logs in the final response phase.
console.info(`LoggingInterceptor: Request to ${reqContext.url} completed with status ${rspContext.responseCode}`);
return true; // Continue to process the interceptor chain.
}
}
// Create an interceptor chain.
let interceptorChain = new http.HttpInterceptorChain();
let authInterceptor = new AuthInterceptor();
let loggingInterceptor = new LoggingInterceptor();
// Create an HTTP request.
let httpRequest = http.createHttp();
try {
// Add the interceptor to the chain.
let success = interceptorChain.addChain([authInterceptor, loggingInterceptor]);
if (!success) {
console.error('Failed to add interceptor chain');
}
// Apply the interceptor chain to the HTTP request.
let applySuccess = interceptorChain.apply(httpRequest);
if (!applySuccess) {
console.error('Failed to apply interceptor chain');
}
} catch (e) {
console.error(`Interceptor chain add failed: code=${e.code}, message=${e.message}`);
}
// Initiate an HTTP request. If interception is required, the request can be initiated only through the request API.
httpRequest.request("EXAMPLE_URL", {
method: http.RequestMethod.GET,
header: { 'Content-Type': 'application/json' }
}, (err: Error, data: http.HttpResponse) => {
if (!err) {
console.info('Request completed with response code: ' + data.responseCode);
} else {
console.error('Request failed: ' + JSON.stringify(err));
}
httpRequest.destroy();
});
PathPreference23+
type PathPreference = 'auto' | 'primaryCellular' | 'secondaryCellular'
Enumerates the types of networks specified in an HTTP request.
NOTE
It is recommended that this parameter be used in scenarios such as network concurrency.
If the specified network is not activated, the system uses the default network.
System capability: SystemCapability.Communication.NetStack
| Type | Description |
|---|---|
| 'auto' | Specifies the default network connection in an HTTP request. |
| 'primaryCellular' | Specifies the default cellular network connection in an HTTP request when the cellular network is activated. |
| 'secondaryCellular' | Specifies the cellular network connection of the secondary SIM card in an HTTP request when dual cellular networks are activated. |