openharmony 鸿蒙 js-apis-http

2025-06-12 浏览 (2)

@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, 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

// Import the http namespace.
import { http } from '@kit.NetworkKit';
import { BusinessError } from '@kit.BasicServicesKit';

// 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(// Customize EXAMPLE_URL in extraData on your own. It is up to you whether to add parameters to the URL.
  "EXAMPLE_URL",
  {
    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: { '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.
    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: `${getContext(this).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. This attribute is supported since API version 15.
  },
  (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.
      // Unsubscribe from HTTP Response Header events.
      httpRequest.off('headersReceive');
      // Call destroy() to destroy the JavaScript object after the HTTP request is complete.
      httpRequest.destroy();
    } else {
      console.info('error:' + JSON.stringify(err));
      // Unsubscribe from HTTP Response Header events.
      httpRequest.off('headersReceive');
      // Call destroy() to destroy the JavaScript object after the HTTP request is complete.
      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. An HttpRequest object corresponds to an HTTP request. To initiate multiple HTTP requests, you must create an HttpRequest object for each HTTP request.

NOTE Call the destroy() method to release resources after the HttpRequest is complete.

Atomic service API: This API can be used in atomic services since API version 11.

System capability: SystemCapability.Communication.NetStack

Return value

TypeDescription
HttpRequestAn HttpRequest object, which contains the request, requestInStream, destroy, on, or off method.

Example

import { http } from '@kit.NetworkKit';

let httpRequest = http.createHttp();

HttpRequest

Defines an HTTP request task. Before invoking methods of HttpRequest, you must call createHttp() to create an HTTP request task.

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 This API supports only receiving of data not greater than 5 MB. 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

NameTypeMandatoryDescription
urlstringYesURL for initiating an HTTP request.
callbackAsyncCallback<HttpResponse>YesCallback used to return the result.

Error codes

IDError Message
401Parameter error.
201Permission denied.
2300001Unsupported protocol.
2300003Invalid URL format or missing URL.
2300005Failed to resolve the proxy name.
2300006Failed to resolve the host name.
2300007Failed to connect to the server.
2300008Invalid server response.
2300009Access to the remote resource denied.
2300016Error in the HTTP2 framing layer.
2300018Transferred a partial file.
2300023Failed to write the received data to the disk or application.
2300025Upload failed.
2300026Failed to open or read local data from the file or application.
2300027Out of memory.
2300028Operation timeout.
2300047The number of redirections reaches the maximum allowed.
2300052The server returned nothing (no header or data).
2300055Failed to send data to the peer.
2300056Failed to receive data from the peer.
2300058Local SSL certificate error.
2300059The specified SSL cipher cannot be used.
2300060Invalid SSL peer certificate or SSH remote key.
2300061Invalid HTTP encoding format.
2300063Maximum file size exceeded.
2300070Remote disk full.
2300073Remote file already exists.
2300077The SSL CA certificate does not exist or is inaccessible.
2300078Remote file not found.
2300094Authentication error.
2300997Cleartext traffic not permitted.
2300998It is not allowed to access this domain.
2300999Unknown error.

NOTE 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.

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.info('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 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.

If you need to pass in cookies, add them to the options parameter.

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

NameTypeMandatoryDescription
urlstringYesURL for initiating an HTTP request.
optionsHttpRequestOptionsYesRequest options. For details, see HttpRequestOptions.
callbackAsyncCallback<HttpResponse>YesCallback used to return the result.

Error codes

IDError Message
401Parameter error.
201Permission denied.
2300001Unsupported protocol.
2300003Invalid URL format or missing URL.
2300005Failed to resolve the proxy name.
2300006Failed to resolve the host name.
2300007Failed to connect to the server.
2300008Invalid server response.
2300009Access to the remote resource denied.
2300016Error in the HTTP2 framing layer.
2300018Transferred a partial file.
2300023Failed to write the received data to the disk or application.
2300025Upload failed.
2300026Failed to open or read local data from the file or application.
2300027Out of memory.
2300028Operation timeout.
2300047The number of redirections reaches the maximum allowed.
2300052The server returned nothing (no header or data).
2300055Failed to send data to the peer.
2300056Failed to receive data from the peer.
2300058Local SSL certificate error.
2300059The specified SSL cipher cannot be used.
2300060Invalid SSL peer certificate or SSH remote key.
2300061Invalid HTTP encoding format.
2300063Maximum file size exceeded.
2300070Remote disk full.
2300073Remote file already exists.
2300077The SSL CA certificate does not exist or is inaccessible.
2300078Remote file not found.
2300094Authentication error.
2300997Cleartext traffic not permitted.
2300998It is not allowed to access this domain.
2300999Unknown error.

NOTE 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.

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.
};

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.info('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 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.

If you need to pass in cookies, add them to the options parameter.

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

NameTypeMandatoryDescription
urlstringYesURL for initiating an HTTP request.
optionsHttpRequestOptionsNoRequest options. For details, see HttpRequestOptions.

Return value

TypeDescription
Promise<HttpResponse>Promise used to return the result.

Error codes

IDError Message
401Parameter error.
201Permission denied.
2300001Unsupported protocol.
2300003Invalid URL format or missing URL.
2300005Failed to resolve the proxy name.
2300006Failed to resolve the host name.
2300007Failed to connect to the server.
2300008Invalid server response.
2300009Access to the remote resource denied.
2300016Error in the HTTP2 framing layer.
2300018Transferred a partial file.
2300023Failed to write the received data to the disk or application.
2300025Upload failed.
2300026Failed to open or read local data from the file or application.
2300027Out of memory.
2300028Operation timeout.
2300047The number of redirections reaches the maximum allowed.
2300052The server returned nothing (no header or data).
2300055Failed to send data to the peer.
2300056Failed to receive data from the peer.
2300058Local SSL certificate error.
2300059The specified SSL cipher cannot be used.
2300060Invalid SSL peer certificate or SSH remote key.
2300061Invalid HTTP encoding format.
2300063Maximum file size exceeded.
2300070Remote disk full.
2300073Remote file already exists.
2300077The SSL CA certificate does not exist or is inaccessible.
2300078Remote file not found.
2300094Authentication error.
2300997Cleartext traffic not permitted.
2300998It is not allowed to access this domain.
2300999Unknown error.

NOTE 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.

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.info('error:' + JSON.stringify(err));
});

destroy

destroy(): void

Destroys an HTTP request.

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

System capability: SystemCapability.Communication.NetStack

Parameters

NameTypeMandatoryDescription
urlstringYesURL for initiating an HTTP request.
callbackAsyncCallback<number>YesCallback used to return the result.

Error codes

IDError Message
401Parameter error.
201Permission denied.
2300001Unsupported protocol.
2300003Invalid URL format or missing URL.
2300005Failed to resolve the proxy name.
2300006Failed to resolve the host name.
2300007Failed to connect to the server.
2300008Invalid server response.
2300009Access to the remote resource denied.
2300016Error in the HTTP2 framing layer.
2300018Transferred a partial file.
2300023Failed to write the received data to the disk or application.
2300025Upload failed.
2300026Failed to open or read local data from the file or application.
2300027Out of memory.
2300028Operation timeout.
2300047The number of redirections reaches the maximum allowed.
2300052The server returned nothing (no header or data).
2300055Failed to send data to the peer.
2300056Failed to receive data from the peer.
2300058Local SSL certificate error.
2300059The specified SSL cipher cannot be used.
2300060Invalid SSL peer certificate or SSH remote key.
2300061Invalid HTTP encoding format.
2300063Maximum file size exceeded.
2300070Remote disk full.
2300073Remote file already exists.
2300077The SSL CA certificate does not exist or is inaccessible.
2300078Remote file not found.
2300094Authentication error.
2300997Cleartext traffic not permitted.
2300998It is not allowed to access this domain.
2300999Unknown error.

NOTE 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.

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.info("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

System capability: SystemCapability.Communication.NetStack

Parameters

NameTypeMandatoryDescription
urlstringYesURL for initiating an HTTP request.
optionsHttpRequestOptionsYesRequest options. For details, see HttpRequestOptions.
callbackAsyncCallback<number>YesCallback used to return the result.

Error codes

IDError Message
401Parameter error.
201Permission denied.
2300001Unsupported protocol.
2300003Invalid URL format or missing URL.
2300005Failed to resolve the proxy name.
2300006Failed to resolve the host name.
2300007Failed to connect to the server.
2300008Invalid server response.
2300009Access to the remote resource denied.
2300016Error in the HTTP2 framing layer.
2300018Transferred a partial file.
2300023Failed to write the received data to the disk or application.
2300025Upload failed.
2300026Failed to open or read local data from the file or application.
2300027Out of memory.
2300028Operation timeout.
2300047The number of redirections reaches the maximum allowed.
2300052The server returned nothing (no header or data).
2300055Failed to send data to the peer.
2300056Failed to receive data from the peer.
2300058Local SSL certificate error.
2300059The specified SSL cipher cannot be used.
2300060Invalid SSL peer certificate or SSH remote key.
2300061Invalid HTTP encoding format.
2300063Maximum file size exceeded.
2300070Remote disk full.
2300073Remote file already exists.
2300077The SSL CA certificate does not exist or is inaccessible.
2300078Remote file not found.
2300094Authentication error.
2300997Cleartext traffic not permitted.
2300998It is not allowed to access this domain.
2300999Unknown error.

NOTE 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.

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',
    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.info("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

System capability: SystemCapability.Communication.NetStack

Parameters

NameTypeMandatoryDescription
urlstringYesURL for initiating an HTTP request.
optionsHttpRequestOptionsNoRequest options. For details, see HttpRequestOptions.

Return value

TypeDescription
Promise<number>Promise used to return the result.

Error codes

IDError Message
401Parameter error.
201Permission denied.
2300001Unsupported protocol.
2300003Invalid URL format or missing URL.
2300005Failed to resolve the proxy name.
2300006Failed to resolve the host name.
2300007Failed to connect to the server.
2300008Invalid server response.
2300009Access to the remote resource denied.
2300016Error in the HTTP2 framing layer.
2300018Transferred a partial file.
2300023Failed to write the received data to the disk or application.
2300025Upload failed.
2300026Failed to open or read local data from the file or application.
2300027Out of memory.
2300028Operation timeout.
2300047The number of redirections reaches the maximum allowed.
2300052The server returned nothing (no header or data).
2300055Failed to send data to the peer.
2300056Failed to receive data from the peer.
2300058Local SSL certificate error.
2300059The specified SSL cipher cannot be used.
2300060Invalid SSL peer certificate or SSH remote key.
2300061Invalid HTTP encoding format.
2300063Maximum file size exceeded.
2300070Remote disk full.
2300073Remote file already exists.
2300077The SSL CA certificate does not exist or is inaccessible.
2300078Remote file not found.
2300094Authentication error.
2300997Cleartext traffic not permitted.
2300998It is not allowed to access this domain.
2300999Unknown error.

NOTE 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.

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.info("requestInStream ERROR : err = " + JSON.stringify(err));
});

on("headerReceive")(deprecated)

on(type: "headerReceive", callback: AsyncCallback<Object>): void

Registers an observer for HTTP Response Header events.

NOTE This API has been deprecated. You are advised to use on("headersReceive")8+.

System capability: SystemCapability.Communication.NetStack

Parameters

NameTypeMandatoryDescription
typestringYesEvent type. The value is headerReceive.
callbackAsyncCallback<Object>YesCallback used to return the result.

Example

import { http } from '@kit.NetworkKit';
import { BusinessError } from '@kit.BasicServicesKit';

let httpRequest = http.createHttp();
httpRequest.on("headerReceive", (data: BusinessError) => {
  console.info("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 has been deprecated. You are advised to use off("headersReceive")8+.

  • You can pass the callback of the on function if you want to cancel listening for a certain type of event. If you do not pass the callback, you will cancel listening for all events.

System capability: SystemCapability.Communication.NetStack

Parameters

NameTypeMandatoryDescription
typestringYesEvent type. The value is headerReceive.
callbackAsyncCallback<Object>NoCallback used to return the result.

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

NameTypeMandatoryDescription
typestringYesEvent type. The value is headersReceive.
callbackCallback<Object>YesCallback used to return the result.

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.

NOTE You can pass the callback of the on function if you want to cancel listening for a certain type of event. If you do not pass the callback, you will cancel listening for all events.

Atomic service API: This API can be used in atomic services since API version 11.

System capability: SystemCapability.Communication.NetStack

Parameters

NameTypeMandatoryDescription
typestringYesEvent type. The value is headersReceive.
callbackCallback<Object>NoCallback used to return the result.

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.

System capability: SystemCapability.Communication.NetStack

Parameters

NameTypeMandatoryDescription
typestringYesEvent type. The value is headersReceive.
callbackCallback<Object>YesCallback used to return the result.

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.

System capability: SystemCapability.Communication.NetStack

Parameters

NameTypeMandatoryDescription
typestringYesEvent type. The value is dataReceive.
callbackAsyncCallback<ArrayBuffer>YesCallback used to return the result.

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.

NOTE You can pass the callback of the on function if you want to cancel listening for a certain type of event. If you do not pass the callback, you will cancel listening for all events.

System capability: SystemCapability.Communication.NetStack

Parameters

NameTypeMandatoryDescription
typestringYesEvent type. The value is dataReceive.
callbackCallback<ArrayBuffer>NoCallback used to return the result.

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.

System capability: SystemCapability.Communication.NetStack

Parameters

NameTypeMandatoryDescription
typestringYesEvent type. The value is dataEnd.
callbackAsyncCallback<void>YesCallback used to return the result.

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.

NOTE You can pass the callback of the on function if you want to cancel listening for a certain type of event. If you do not pass the callback, you will cancel listening for all events.

System capability: SystemCapability.Communication.NetStack

Parameters

NameTypeMandatoryDescription
typestringYesEvent type. The value is dataEnd.
callbackCallback<void>NoCallback used to return the result.

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.

System capability: SystemCapability.Communication.NetStack

Parameters

NameTypeMandatoryDescription
typestringYesEvent type. The value is dataReceiveProgress.
callbackAsyncCallback<DataReceiveProgressInfo>YesCallback used to return the result.

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.

NOTE You can pass the callback of the on function if you want to cancel listening for a certain type of event. If you do not pass the callback, you will cancel listening for all events.

System capability: SystemCapability.Communication.NetStack

Parameters

NameTypeMandatoryDescription
typestringYesEvent type. The value is dataReceiveProgress.
callbackCallback<DataReceiveProgressInfo>NoCallback used to return the result.

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

NameTypeMandatoryDescription
typestringYesEvent type. The value is dataSendProgress.
callbackAsyncCallback<DataSendProgressInfo>YesCallback used to return the result.

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.

NOTE You can pass the callback of the on function if you want to cancel listening for a certain type of event. If you do not pass the callback, you will cancel listening for all events.

Atomic service API: This API can be used in atomic services since API version 15.

System capability: SystemCapability.Communication.NetStack

Parameters

NameTypeMandatoryDescription
typestringYesEvent type. The value is dataSendProgress.
callbackCallback<DataSendProgressInfo>NoCallback used to return the result.

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

Specifies the type and value range of the optional parameters in the HTTP request.

System capability: SystemCapability.Communication.NetStack

NameTypeMandatoryDescription
methodRequestMethodNoRequest method. The default value is GET.
Atomic service API: This API can be used in atomic services since API version 11.
extraDatastring |Object |ArrayBufferNoAdditional data for sending a request. This parameter is not used by default.
- If the HTTP request uses a POST or PUT method, this field serves as the content of the HTTP request and is encoded in UTF-8 format.
(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, DELETE, 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.
expectDataType9+HttpDataTypeNoType 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+booleanNoWhether to use the cache. The default value is true. The cache takes effect with the current process. The new cache will replace the old one.
Atomic service API: This API can be used in atomic services since API version 11.
priority9+numberNoPriority 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.
headerObjectNoHTTP 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'}.
Atomic service API: This API can be used in atomic services since API version 11.
readTimeoutnumberNoRead timeout duration. The default value is 60000, in ms.
The value 0 indicates no timeout.
Atomic service API: This API can be used in atomic services since API version 11.
connectTimeoutnumberNoConnection timeout interval. The default value is 60000, in ms.
Atomic service API: This API can be used in atomic services since API version 11.
usingProtocol9+HttpProtocolNoProtocol. 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 |HttpProxyNoWhether to use HTTP proxy. The default value is false, which means not to use HTTP proxy.
- If usingProxy is of the Boolean type and the value is true, network proxy is used by default.
- If usingProxy is of the HttpProxy type, the specified network proxy is used.
Atomic service API: This API can be used in atomic services since API version 11.
caPath10+stringNoPath of the CA certificate. If this parameter is set, the system uses the CA certificate in the specified path. Otherwise, the system uses the preset CA certificate.
The preset CA certificate is available at /etc/ssl/certs/cacert.pem. This path is the sandbox mapping path, which can be obtained through getContext().filesDir. Currently, only .pem certificates are supported.
Atomic service API: This API can be used in atomic services since API version 11.
resumeFrom11+numberNoDownload 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+numberNoDownload 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+ClientCertNoClient certificate.
dnsOverHttps11+stringNoDNS resolution for a server that uses the HTTPS protocol.
- The value must be URL-encoded in the following format: "https://host:port/path".
dnsServers11+Array<string>NoArray of DNS servers used for DNS resolution.
- You can set a maximum of three DNS servers. 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+numberNoMaximum 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>NoForm data list. This field is valid when content-Type is set to multipart/form-data.
certificatePinning12+CertificatePinning |CertificatePinning[]NoDynamic configuration of certificate pinning. One or more certificate PINs can be specified.
addressFamily15+AddressFamilyNoIP address family. You can specify an address type for domain name resolution.
remoteValidation18+RemoteValidationNoCertificate 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+TlsOptionsNoTLS configuration.
Atomic service API: This API can be used in atomic services since API version 18.
serverAuthentication18+ServerAuthenticationNoIndicates 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.

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

NameValueDescription
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.

ResponseCode

Enumerates the response codes for an HTTP request.

System capability: SystemCapability.Communication.NetStack

NameValueDescription
OK200The 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.
CREATED201"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.
ACCEPTED202"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_AUTHORITATIVE203"Non-Authoritative Information." The request is successful.
Atomic service API: This API can be used in atomic services since API version 11.
NO_CONTENT204"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.
RESET205"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.
PARTIAL206"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_CHOICE300"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_PERM301"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_TEMP302"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_OTHER303"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_MODIFIED304"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_PROXY305"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_REQUEST400"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.
UNAUTHORIZED401"Unauthorized." The request requires user authentication.
Atomic service API: This API can be used in atomic services since API version 11.
PAYMENT_REQUIRED402"Payment Required." This code is reserved for future use.
Atomic service API: This API can be used in atomic services since API version 11.
FORBIDDEN403"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_FOUND404"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_METHOD405"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_ACCEPTABLE406"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_AUTH407"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_TIMEOUT408"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.
CONFLICT409"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.
GONE410"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_REQUIRED411"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_FAILED412"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_LARGE413"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_LONG414"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_TYPE415"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_ERROR500"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_IMPLEMENTED501"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_GATEWAY502"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.
UNAVAILABLE503"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_TIMEOUT504"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.
VERSION505"HTTP Version Not Supported." The server does not support the HTTP protocol version used in the 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

NameTypeMandatoryDescription
resultstring |Object |ArrayBufferYesResponse 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+HttpDataTypeYesType of the return value.
Atomic service API: This API can be used in atomic services since API version 11.
responseCodeResponseCode |numberYesResult 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.
headerObjectYesResponse 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+stringYesOriginal 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+PerformanceTimingYesTime consumed in each phase of an HTTP request.

ClientCert11+

Defines the client certificate type.

System capability: SystemCapability.Communication.NetStack

NameTypeMandatoryDescription
certPathstringYesCertificate path.
certTypeCertTypeNoCertificate type. The default value is PEM.
keyPathstringYesPath of the certificate key file.
keyPasswordstringNoPassword of the certificate key file.

PerformanceTiming11+

Configures the timing for performance tracing, in ms.

System capability: SystemCapability.Communication.NetStack

NameTypeMandatoryDescription
dnsTimingnumberYesDuration from the time when the request is sent to the time when the DNS resolution is complete.
tcpTimingnumberYesDuration from the time when the request is sent to the time when the TCP connection is complete.
tlsTimingnumberYesDuration from the time when the request is sent to the time when the TLS connection is complete.
firstSendTimingnumberYesDuration from the time when the request is sent to the time when the first byte is sent.
firstReceiveTimingnumberYesDuration from the time when the request is sent to the time when the first byte is received.
totalFinishTimingnumberYesDuration from the time when the request is sent to the time when the request is complete.
redirectTimingnumberYesDuration from the time when the request is sent to the time when all redirection steps are complete.
responseHeaderTimingnumberYesDuration from the time when the request is sent to the time when the header resolution is complete.
responseBodyTimingnumberYesDuration from the time when the request is sent to the time when the body resolution is complete.
totalTimingnumberYesDuration from the time when the request is sent to the time when a callback is returned to the application.

DataReceiveProgressInfo11+

Defines the data receiving progress information.

System capability: SystemCapability.Communication.NetStack

NameTypeMandatoryDescription
receiveSizenumberYesSize of data that has been received, in bytes.
totalSizenumberYesTotal size 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

NameTypeMandatoryDescription
sendSizenumberYesSize of data to be sent, in bytes.
totalSizenumberYesTotal size of data to be sent, in bytes.

MultiFormData11+

Defines the type of multi-form data.

System capability: SystemCapability.Communication.NetStack

NameTypeMandatoryDescription
namestringYesData name.
contentTypestringYesData type, for example, text/plain, image/png, image/jpeg, audio/mpeg, or video/mp4.
remoteFileNamestringNoName of the file uploaded to the server.
datastring |Object |ArrayBufferNoForm data content.
filePathstringNoFile path. This field is used to configure the MIME body content based on the file content. This field is used as the substitute of data to set the file data as data content. If data is empty, filePath must be set. If data is present, filePath does not take effect.

http.createHttpResponseCache9+

createHttpResponseCache(cacheSize?: number): HttpResponseCache

Creates an HttpResponseCache object that stores the response data of HTTP requests. You can call the flush or delete method as needed in the object. cacheSize specifies the cache size.

Atomic service API: This API can be used in atomic services since API version 11.

System capability: SystemCapability.Communication.NetStack

Parameters

NameTypeMandatoryDescription
cacheSizenumberNoCache size. The maximum value is 10*1024*1024 (10 MB). By default, the maximum value is used.

Return value

TypeDescription
HttpResponseCacheObject 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, or private.

  • Expires: specifies the expiration time of a resource. The value is in the GMT format.

  • ETag: identifies the resource version. The client can use the If-None-Match request header to check whether the resource has been modified.

  • Last-Modified: specifies the last modification time of a resource. The client can use the If-Modified-Since request 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=3600 indicates 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 to must-revalidate, but applies only to shared caches.

  • s-maxage: works in a way similar to max-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

NameTypeMandatoryDescription
callbackAsyncCallback<void>YesCallback used to return the result.

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 destroy the JavaScript object after the HTTP request is complete.
    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

TypeDescription
Promise<void>Promise used to return the result.

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.info('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

NameTypeMandatoryDescription
callbackAsyncCallback<void>YesCallback used to return the result.

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("errocode" + 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

TypeDescription
Promise<void>Promise used to return the result.

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.log("success");
  }).catch((err: BusinessError) => {
    console.error("fail");
  });
  httpRequest.destroy();
}).catch((error: BusinessError) => {
  console.error("errocode" + 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

NameValueDescription
STRING0String type.
OBJECT1Object type.
ARRAY_BUFFER2Binary array type.

HttpProtocol9+

Enumerates HTTP protocol versions.

System capability: SystemCapability.Communication.NetStack

NameValueDescription
HTTP1_10HTTP1.1
Atomic service API: This API can be used in atomic services since API version 11.
HTTP21HTTP2
Atomic service API: This API can be used in atomic services since API version 11.
HTTP311+2HTTP3 protocol. If the system or server does not support HTTP3, the HTTP protocol of an earlier version is used.
This field is valid only for HTTPS URLs. For HTTP URLs, the request fails.

CertType11+

Enumerates certificate types.

System capability: SystemCapability.Communication.NetStack

NameDescription
PEMPEM certificate.
DERDER certificate.
P12P12 certificate.

CertificatePinning12+

Defines the dynamic configuration of certificate pinning.

System capability: SystemCapability.Communication.NetStack

NameTypeMandatoryDescription
publicKeyHashstringYesCertificate PIN of the string type.
hashAlgorithm'SHA-256'YesEncryption 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

TypeDescription
connection.HttpProxyNetwork proxy configuration.

AddressFamily15+

Enumerates the address types for domain name resolution.

System capability: SystemCapability.Communication.NetStack

NameDescription
DEFAULTAutomatically selects the IPv4 or IPv6 address of the target domain name.
ONLY_V4Resolves only the IPv4 address of the target domain name and ignores the IPv6 address.
ONLY_V6Resolves only the IPv6 address of the target domain name and ignores the IPv4 address.

RemoteValidation18+

type RemoteValidation = 'system'|'skip'

Certificate authority (CA), which is used to verify the identity of a remote server. You can configure RemoteValidation to use the system CA or skip CA verification.

Atomic service API: This API can be used in atomic services since API version 18.

System capability: SystemCapability.Communication.NetStack

TypeDescription
'system'Use of the system CA for verification.
'skip'Skipping of CA verification.

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

NameTypeRead OnlyOptionalDescription
usernamestringNoNoUser name used for verification. The default value is ''.
passwordstringNoNoPassword 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

NameTypeRead OnlyOptionalDescription
credentialCredentialNoNoServer credential. The default value is undefined.
authenticationTypeAuthenticationTypeNoYesServer identity verification type. If the type is not set, negotiation with the server is required.

TlsConfig18+

Defines the 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

NameTypeRead OnlyOptionalDescription
tlsVersionMinTlsVersionNoNoEarliest TLS version.
tlsVersionMaxTlsVersionNoNoLatest TLS version.
cipherSuitesCipherSuite[]NoYesArray of cipher suite types.

TlsVersion18+

Enumerates TLS versions.

Atomic service API: This API can be used in atomic services since API version 18.

System capability: SystemCapability.Communication.NetStack

NameValueDescription
TLS_V_1_04TLS version 1.0.
TLS_V_1_15TLS version 1.1.
TLS_V_1_26TLS version 1.2.
TLS_V_1_37TLS 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

TypeDescription
'system'TLS version of the system. This field is defaulted to system when the value is not set.
TlsOptionsCustom 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

TypeDescription
'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

TypeDescription
'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

TypeDescription
TlsV13CipherSuiteCipher 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

TypeDescription
TlsV12CipherSuiteTlsV12CipherSuite.
TlsV13SpecificCipherSuiteTlsV13SpecificCipherSuite.

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

TypeDescription
TlsV11CipherSuiteTlsV11CipherSuite.
TlsV12SpecificCipherSuiteTlsV12SpecificCipherSuite.

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

TypeDescription
TlsV10CipherSuiteTlsV10CipherSuite.

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

TypeDescription
TlsV10SpecificCipherSuiteTlsV10SpecificCipherSuite.

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

TypeDescription
'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

TypeDescription
'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

TypeDescription
'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.

你可能感兴趣的鸿蒙文章

harmony 鸿蒙Network Kit

harmony 鸿蒙NetConn_ConnectionProperties

harmony 鸿蒙NetConn_HttpProxy

harmony 鸿蒙NetConn_NetAddr

harmony 鸿蒙NetConn_NetCapabilities

harmony 鸿蒙NetConn_NetConnCallback

harmony 鸿蒙NetConn_NetHandle

harmony 鸿蒙NetConn_NetHandleList

harmony 鸿蒙NetConn_NetSpecifier

harmony 鸿蒙NetConn_Route

  • 所属分类: 后端技术
  • 本文标签: 鸿蒙 软件
  • 版权声明: 本文链接 https://seaxiang.com/blog/Y7Fcrn