harmony 鸿蒙@ohos.net.http (数据请求)

  • 2025-06-16
  • 浏览 (5)

@ohos.net.http (数据请求)

本模块提供HTTP数据请求能力。应用可以通过HTTP发起一个数据请求,支持常见的GET、POST、OPTIONS、HEAD、PUT、DELETE、TRACE、CONNECT方法。

说明:

本模块首批接口从API version 6开始支持。后续版本的新增接口,采用上角标单独标记接口的起始版本。

导入模块

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

完整示例

说明:

在本文档的示例中,通过this.context来获取UIAbilityContext,其中this代表继承自UIAbility的UIAbility实例。如需在页面中使用UIAbilityContext提供的能力,请参见获取UIAbility的上下文信息

// 引入包名
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;
// 每一个httpRequest对应一个HTTP请求任务,不可复用。
let httpRequest = http.createHttp();
// 用于订阅HTTP响应头,此接口会比request请求先返回。可以根据业务需要订阅此消息。
// 从API 8开始,使用on('headersReceive', Callback)替代on('headerReceive', AsyncCallback)。 8+
httpRequest.on('headersReceive', (header: Object) => {
  console.info('header: ' + JSON.stringify(header));
});

httpRequest.request(// 填写HTTP请求的URL地址,可以带参数也可以不带参数。URL地址需要开发者自定义。请求的参数可以在extraData中指定。
  "EXAMPLE_URL",
  {
    method: http.RequestMethod.POST, // 可选,默认为http.RequestMethod.GET。
    // 当使用POST请求时此字段用于传递请求体内容,具体格式与服务端协商确定。
    extraData: 'data to send',
    expectDataType: http.HttpDataType.STRING, // 可选,指定返回数据的类型。
    usingCache: true, // 可选,默认为true。
    priority: 1, // 可选,默认为1。
    // 开发者根据自身业务需要添加header字段。
    header: { 'Accept' : 'application/json' },
    readTimeout: 60000, // 可选,默认为60000ms。
    connectTimeout: 60000, // 可选,默认为60000ms。
    usingProtocol: http.HttpProtocol.HTTP1_1, // 可选,协议类型默认值由系统自动指定。
    usingProxy: false, //可选,默认不使用网络代理,自API 10开始支持该属性。
    caPath: '/path/to/cacert.pem', // 可选,默认使用系统预设CA证书,自API 10开始支持该属性。
    clientCert: { // 可选,默认不使用客户端证书,自API 11开始支持该属性。
      certPath: '/path/to/client.pem', // 默认不使用客户端证书,自API 11开始支持该属性。
      keyPath: '/path/to/client.key', // 若证书包含Key信息,传入空字符串,自API 11开始支持该属性。
      certType: http.CertType.PEM, // 可选,默认使用PEM,自API 11开始支持该属性。
      keyPassword: "passwordToKey" // 可选,输入key文件的密码,自API 11开始支持该属性。
    },
    certificatePinning: [ // 可选,支持证书锁定配置信息的动态设置,自API 12开始支持该属性。
      {
        publicKeyHash: 'Pin1', // 由应用传入的证书PIN码,自API 12开始支持该属性。
        hashAlgorithm: 'SHA-256' // 加密算法,当前仅支持SHA-256,自API 12开始支持该属性。
      }, {
        publicKeyHash: 'Pin2', // 由应用传入的证书PIN码,自API 12开始支持该属性。
        hashAlgorithm: 'SHA-256' // 加密算法,当前仅支持SHA-256,自API 12开始支持该属性。
      }
    ],
    multiFormDataList: [ // 可选,仅当Header中,'content-Type'为'multipart/form-data'时生效,自API 11开始支持该属性。
      {
        name: "Part1", // 数据名,自API 11开始支持该属性。
        contentType: 'text/plain', // 数据类型,自API 11开始支持该属性。
        data: 'Example data', // 可选,数据内容,自API 11开始支持该属性。
        remoteFileName: 'example.txt' // 可选,自API 11开始支持该属性。
      }, {
        name: "Part2", // 数据名,自API 11开始支持该属性。
        contentType: 'text/plain', // 数据类型,自API 11开始支持该属性。
        // data/app/el2/100/base/com.example.myapplication/haps/entry/files/fileName.txt
        filePath: `${context.filesDir}/fileName.txt`, // 可选,传入文件路径,自API 11开始支持该属性。
        remoteFileName: 'fileName.txt' // 可选,自API 11开始支持该属性。
      }
    ],
    addressFamily: http.AddressFamily.DEFAULT // 可选,系统默认选择目标域名的IPv4地址或IPv6地址,自API 15开始支持该属性。
  },
  (err: BusinessError, data: http.HttpResponse) => {
    if (!err) {
      // data.result为HTTP响应内容,可根据业务需要进行解析。
      console.info('Result:' + JSON.stringify(data.result));
      console.info('code:' + JSON.stringify(data.responseCode));
      console.info('type:' + JSON.stringify(data.resultType));
      // data.header为HTTP响应头,可根据业务需要进行解析。
      console.info('header:' + JSON.stringify(data.header));
      console.info('cookies:' + JSON.stringify(data.cookies)); // 自API version 8开始支持cookie。
      // 取消订阅HTTP响应头事件。
      httpRequest.off('headersReceive');
      // 当该请求使用完毕时,开发者务必调用destroy方法主动销毁该JavaScript Object。
      httpRequest.destroy();
    } else {
      console.error('error:' + JSON.stringify(err));
      // 取消订阅HTTP响应头事件。
      httpRequest.off('headersReceive');
      // 当该请求使用完毕时,开发者务必调用destroy方法主动销毁该JavaScript Object。
      httpRequest.destroy();
    }
  });

说明: console.info()输出的数据中包含换行符会导致数据出现截断现象。

自API 12开始支持接收经过brotli算法压缩的HTTP响应。

http.createHttp

createHttp(): HttpRequest

创建一个HTTP请求,里面包括发起请求、中断请求、订阅/取消订阅HTTP Response Header事件。当发起多个HTTP请求时,需为每个HTTP请求创建对应HttpRequest对象。每一个HttpRequest对象对应一个HTTP请求。

说明: 当该请求使用完毕时,需调用destroy方法主动销毁HttpRequest对象,否则会出现资源泄露问题。

原子化服务API: 从API version 11开始,该接口支持在原子化服务中使用。

系统能力:SystemCapability.Communication.NetStack

返回值:

类型 说明
HttpRequest 返回一个HttpRequest对象,里面包括request、requestInStream、destroy、on和off方法。

示例:

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

let httpRequest = http.createHttp();

HttpRequest

HTTP请求任务。在调用HttpRequest的方法前,需要先通过createHttp()创建一个任务。

request

request(url: string, callback: AsyncCallback<HttpResponse>): void

根据URL地址,发起HTTP网络请求,使用callback方式作为异步方法。

说明: 此接口仅支持接收数据大小为5M以内的数据,如果接收超过5M的数据,需要在HttpRequestOptions的maxLimit中进行设置。

若URL包含中文或其他语言,需先调用encodeURL(URL)编码,再发起请求。

需要权限:ohos.permission.INTERNET

原子化服务API: 从API version 11开始,该接口支持在原子化服务中使用。

系统能力:SystemCapability.Communication.NetStack

参数:

参数名 类型 必填 说明
url string 发起网络请求的URL地址。
callback AsyncCallback<HttpResponse> 回调函数。

错误码:

以下错误码的详细介绍参见通用错误码HTTP错误码
HTTP错误码映射关系:2300000 + curl错误码。更多常用错误码可参考:curl错误码

错误码ID 错误信息
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.

示例:

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); // 自API version 8开始支持cookie。
  } else {
    console.error('error:' + JSON.stringify(err));
  }
});

request

request(url: string, options: HttpRequestOptions, callback: AsyncCallback<HttpResponse>):void

根据URL地址和相关配置项,发起HTTP网络请求,使用callback方式作为异步方法。

说明: 此接口仅支持数据大小为5M以内的数据接收,如果有超过5M的数据接收,需要主动在HttpRequestOptions的maxLimit中进行设置。

如需传入cookies,请开发者自行在参数options中添加。

需要权限:ohos.permission.INTERNET

原子化服务API: 从API version 11开始,该接口支持在原子化服务中使用。

系统能力:SystemCapability.Communication.NetStack

参数:

参数名 类型 必填 说明
url string 发起网络请求的URL地址。
options HttpRequestOptions 参考HttpRequestOptions
callback AsyncCallback<HttpResponse> 回调函数。当请求成功时,回调内容是HttpResponse ,请求失败时为undefined。

错误码:

以下错误码的详细介绍参见通用错误码HTTP错误码
HTTP错误码映射关系:2300000 + curl错误码。更多常用错误码可参考:curl错误码

错误码ID 错误信息
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.

示例:

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, // 可选,默认为http.RequestMethod.GET。
    // 当使用POST请求时此字段用于传递请求体内容,具体格式与服务端协商确定。
    extraData: 'data to send',
    expectDataType: http.HttpDataType.STRING, // 可选,指定返回数据的类型。
    usingCache: true, // 可选,默认为true。
    priority: 1, // 可选,默认为1。
    // 开发者根据自身业务需要添加header字段。
    header: new Header('application/json'),
    readTimeout: 60000, // 可选,默认为60000ms。
    connectTimeout: 60000, // 可选,默认为60000ms。
    usingProtocol: http.HttpProtocol.HTTP1_1, // 可选,协议类型默认值由系统自动指定。
    usingProxy: false, //可选,默认不使用网络代理,自API 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); // 自API version 8开始支持cookie。
  } else {
    console.error('error:' + JSON.stringify(err));
  }
});

request

request(url: string, options? : HttpRequestOptions): Promise<HttpResponse>

根据URL地址,发起HTTP网络请求,使用Promise方式作为异步方法。

说明: 此接口仅支持数据大小为5M以内的数据接收,如果有超过5M的数据接收,需要主动在HttpRequestOptions的maxLimit中进行设置。

如需传入cookies,请开发者自行在参数options中添加。

需要权限:ohos.permission.INTERNET

原子化服务API: 从API version 11开始,该接口支持在原子化服务中使用。

系统能力:SystemCapability.Communication.NetStack

参数:

参数名 类型 必填 说明
url string 发起网络请求的URL地址。
options HttpRequestOptions 参考HttpRequestOptions

返回值:

类型 说明
Promise<HttpResponse> 以Promise形式返回发起请求的结果。

错误码:

以下错误码的详细介绍参见通用错误码HTTP错误码
HTTP错误码映射关系:2300000 + curl错误码。更多常用错误码可参考:curl错误码

错误码ID 错误信息
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.

示例:

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); // 自API version 8开始支持cookie。
  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

中断请求任务。

原子化服务API: 从API version 11开始,该接口支持在原子化服务中使用。

系统能力:SystemCapability.Communication.NetStack

示例:

import { http } from '@kit.NetworkKit';
let httpRequest = http.createHttp();

httpRequest.destroy();

requestInStream10+

requestInStream(url: string, callback: AsyncCallback<number>): void

根据URL地址,发起HTTP网络请求并返回流式响应,使用callback方式作为异步方法。

需要权限:ohos.permission.INTERNET

原子化服务API: 从API version 15开始,该接口支持在原子化服务中使用。

系统能力:SystemCapability.Communication.NetStack

参数:

参数名 类型 必填 说明
url string 发起网络请求的URL地址。
callback AsyncCallback<number> 回调函数。

错误码:

以下错误码的详细介绍参见通用错误码HTTP错误码
HTTP错误码映射关系:2300000 + curl错误码。更多常用错误码可参考:curl错误码

错误码ID 错误信息
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.

示例:

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

根据URL地址和相关配置项,发起HTTP网络请求并返回流式响应,使用callback方式作为异步方法。

需要权限:ohos.permission.INTERNET

原子化服务API: 从API version 15开始,该接口支持在原子化服务中使用。

系统能力:SystemCapability.Communication.NetStack

参数:

参数名 类型 必填 说明
url string 发起网络请求的URL地址。
options HttpRequestOptions 参考HttpRequestOptions
callback AsyncCallback<number> 回调函数。

错误码:

以下错误码的详细介绍参见通用错误码HTTP错误码
HTTP错误码映射关系:2300000 + curl错误码。更多常用错误码可参考:curl错误码

错误码ID 错误信息
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.

示例:

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, // 可选,默认为http.RequestMethod.GET。
    // 当使用POST请求时此字段用于传递请求体内容,具体格式与服务端协商确定。
    extraData: 'data to send',
    expectDataType: http.HttpDataType.STRING, // 可选,指定返回数据的类型。
    usingCache: true, // 可选,默认为true。
    priority: 1, // 可选,默认为1。
    // 开发者根据自身业务需要添加header字段。
    header: new Header('application/json'),
    readTimeout: 60000, // 可选,默认为60000ms。
    connectTimeout: 60000, // 可选,默认为60000ms。
    usingProtocol: http.HttpProtocol.HTTP1_1, // 可选,协议类型默认值由系统自动指定。
    usingProxy: false, //可选,默认不使用网络代理,自API 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>

根据URL地址,发起HTTP网络请求并返回流式响应,使用Promise方式作为异步方法。

需要权限:ohos.permission.INTERNET

原子化服务API: 从API version 15开始,该接口支持在原子化服务中使用。

系统能力:SystemCapability.Communication.NetStack

参数:

参数名 类型 必填 说明
url string 发起网络请求的URL地址。
options HttpRequestOptions 参考HttpRequestOptions

返回值:

类型 说明
Promise<number> 以Promise形式返回发起请求的结果。

错误码:

以下错误码的详细介绍参见通用错误码HTTP错误码
HTTP错误码映射关系:2300000 + curl错误码。更多常用错误码可参考:curl错误码

错误码ID 错误信息
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.

示例:

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

on(“headerReceive”)(deprecated)

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

订阅HTTP Response Header 事件。

说明: 从API version 6开始支持,从API version 8开始废弃,建议使用on(“headersReceive”)8+替代。

系统能力:SystemCapability.Communication.NetStack

参数:

参数名 类型 必填 说明
type string 订阅的事件类型,’headerReceive’。
callback AsyncCallback<Object> 回调函数。当订阅成功,error为undefined,data为获取到HTTP响应头;否则为错误对象。

示例:

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

取消订阅HTTP Response Header事件。

说明:

从API version 6开始支持,从API version 8开始废弃,建议使用off(“headersReceive”)8+替代。

系统能力:SystemCapability.Communication.NetStack

参数:

参数名 类型 必填 说明
type string 取消订阅的事件类型,’headerReceive’。
callback AsyncCallback<Object> 回调函数。可以指定传入on中的callback取消对应的订阅,也可以不指定callback清空所有订阅。

示例:

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

let httpRequest = http.createHttp();
httpRequest.off("headerReceive");

on(“headersReceive”)8+

on(type: “headersReceive”, callback: Callback<Object>): void

订阅HTTP Response Header 事件。

原子化服务API: 从API version 11开始,该接口支持在原子化服务中使用。

系统能力:SystemCapability.Communication.NetStack

参数:

参数名 类型 必填 说明
type string 订阅的事件类型:’headersReceive’。
callback Callback<Object> 回调函数,返回HTTP响应头对象。

示例:

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

取消订阅HTTP Response Header 事件。

原子化服务API: 从API version 11开始,该接口支持在原子化服务中使用。

系统能力:SystemCapability.Communication.NetStack

参数:

参数名 类型 必填 说明
type string 取消订阅的事件类型:’headersReceive’。
callback Callback<Object> 回调函数。可以指定传入on中的callback取消对应的订阅,也可以不指定callback清空所有订阅。

示例:

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

订阅HTTP Response Header 事件,只能触发一次。触发之后,订阅器就会被移除。使用callback方式作为异步方法。

原子化服务API: 从API version 15开始,该接口支持在原子化服务中使用。

系统能力:SystemCapability.Communication.NetStack

参数:

参数名 类型 必填 说明
type string 订阅的事件类型:’headersReceive’。
callback Callback<Object> 回调函数。返回HTTP响应头对象。

示例:

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: AsyncCallback<ArrayBuffer>): void

订阅HTTP流式响应数据接收事件。

原子化服务API: 从API version 15开始,该接口支持在原子化服务中使用。

系统能力:SystemCapability.Communication.NetStack

参数:

参数名 类型 必填 说明
type string 订阅的事件类型,’dataReceive’。
callback AsyncCallback<ArrayBuffer> 回调函数。当订阅成功时,error为undefined,data为获取到的HTTP流式数据接收数据,类型为ArrayBuffer;否则为错误对象。

示例:

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

取消订阅HTTP流式响应数据接收事件。

原子化服务API: 从API version 15开始,该接口支持在原子化服务中使用。

系统能力:SystemCapability.Communication.NetStack

参数:

参数名 类型 必填 说明
type string 取消订阅的事件类型:’dataReceive’。
callback Callback<ArrayBuffer> 回调函数。可以指定传入on中的callback取消对应的订阅,也可以不指定callback清空所有订阅。

示例:

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: AsyncCallback<void>): void

订阅HTTP流式响应数据接收完毕事件。

原子化服务API: 从API version 15开始,该接口支持在原子化服务中使用。

系统能力:SystemCapability.Communication.NetStack

参数:

参数名 类型 必填 说明
type string 订阅的事件类型,’dataEnd’。
callback AsyncCallback<void> 回调函数。当订阅成功时,err为undefined,否则为错误对象。

示例:

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

取消订阅HTTP流式响应数据接收完毕事件。

原子化服务API: 从API version 15开始,该接口支持在原子化服务中使用。

系统能力:SystemCapability.Communication.NetStack

参数:

参数名 类型 必填 说明
type string 取消订阅的事件类型:’dataEnd’。
callback Callback<void> 回调函数。可以指定传入on中的callback取消对应的订阅,也可以不指定callback清空所有订阅。

示例:

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: AsyncCallback<DataReceiveProgressInfo>): void

订阅HTTP流式响应数据接收进度事件。

原子化服务API: 从API version 15开始,该接口支持在原子化服务中使用。

系统能力:SystemCapability.Communication.NetStack

参数:

参数名 类型 必填 说明
type string 订阅的事件类型,’dataReceiveProgress’。
callback AsyncCallback<DataReceiveProgressInfo> 回调函数。当订阅成功时,回调内容是DataReceiveProgressInfo,订阅失败时为undefined。

示例:

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

取消订阅HTTP流式响应数据接收进度事件。

原子化服务API: 从API version 15开始,该接口支持在原子化服务中使用。

系统能力:SystemCapability.Communication.NetStack

参数:

参数名 类型 必填 说明
type string 取消订阅的事件类型:’dataReceiveProgress’。
callback Callback<DataReceiveProgressInfo> 回调函数。 可以指定传入on中的callback取消对应的订阅,也可以不指定callback清空所有订阅。

示例:

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: AsyncCallback<DataSendProgressInfo>): void

订阅HTTP网络请求数据发送进度事件。

原子化服务API: 从API version 15开始,该接口支持在原子化服务中使用。

系统能力:SystemCapability.Communication.NetStack

参数:

参数名 类型 必填 说明
type string 订阅的事件类型,’dataSendProgress’。
callback AsyncCallback<DataSendProgressInfo> 回调函数。当订阅成功时,回调内容是DataSendProgressInfo,订阅失败时为undefined。

示例:

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

取消订阅HTTP网络请求数据发送进度事件。

原子化服务API: 从API version 15开始,该接口支持在原子化服务中使用。

系统能力:SystemCapability.Communication.NetStack

参数:

参数名 类型 必填 说明
type string 取消订阅的事件类型:’dataSendProgress’。
callback Callback<DataSendProgressInfo> 回调函数。可以指定传入on中的callback取消对应的订阅,也可以不指定callback清空所有订阅。

示例:

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

发起HTTP请求时,可选配置信息。

系统能力:SystemCapability.Communication.NetStack

名称 类型 必填 说明
method RequestMethod 请求方式,默认为GET。
原子化服务API: 从API version 11开始,该接口支持在原子化服务中使用。
extraData string |Object |ArrayBuffer 发送请求的额外数据,默认无此字段。
1. 当HTTP请求为POST、PUT等方法时,此字段为HTTP请求的content,以UTF-8编码形式作为请求体。
示例如下:
(1) 当’content-Type’为’application/x-www-form-urlencoded’时,请求提交的信息主体数据必须在key和value进行URL转码后(encodeURIComponent/encodeURI),按照键值对”key1=value1&key2=value2&key3=value3”的方式进行编码,该字段对应的类型通常为String。
(2) 当’content-Type’为’text/xml’时,该字段对应的类型通常为String。
(3) 当’content-Type’为’application/json’时,该字段对应的类型通常为Object。
(4) 当’content-Type’为’application/octet-stream’时,该字段对应的类型通常为ArrayBuffer。
(5) 当’content-Type’为’multipart/form-data’且需上传的字段为文件时,该字段对应的类型通常为ArrayBuffer。
以上信息仅供参考,并可能根据具体情况有所不同。
2. 当HTTP请求为GET、OPTIONS、DELETE、TRACE、CONNECT等方法时,此字段为HTTP请求参数的补充。开发者需传入Encode编码后的string类型参数,Object类型的参数无需预编码,参数内容会拼接到URL中进行发送。ArrayBuffer类型的参数不会做拼接处理。
原子化服务API: 从API version 11开始,该接口支持在原子化服务中使用。
expectDataType9+ HttpDataType 指定返回数据的类型,默认无此字段。如果设置了此参数,系统将优先返回指定的类型。当指定其类型为Object时,最大长度为65536字符数。
原子化服务API: 从API version 11开始,该接口支持在原子化服务中使用。
usingCache9+ boolean 是否使用缓存,true表示请求时优先读取缓存,false表示不使用缓存;默认为true,请求时优先读取缓存。缓存跟随当前进程生效,新缓存会替换旧缓存。
原子化服务API: 从API version 11开始,该接口支持在原子化服务中使用。
priority9+ number HTTP/HTTPS请求并发优先级,值越大优先级越高,范围[1,1000],默认为1。
原子化服务API: 从API version 11开始,该接口支持在原子化服务中使用。
header Object HTTP请求头字段。当请求方式为”POST” “PUT” “DELETE” 或者”“时,默认{‘content-Type’: ‘application/json’}, 否则默认{‘content-Type’: ‘application/x-www-form-urlencoded’}。
如果head中包含number类型的字段,最大支持int64的整数。
原子化服务API: 从API version 11开始,该接口支持在原子化服务中使用。
readTimeout number 读取超时时间。单位为毫秒(ms),默认为60000ms。传入值需为uint32_t范围内的整数。
设置为0表示不会出现超时情况。
原子化服务API: 从API version 11开始,该接口支持在原子化服务中使用。
connectTimeout number 连接超时时间。单位为毫秒(ms),默认为60000ms。传入值需为uint32_t范围内的整数。
原子化服务API: 从API version 11开始,该接口支持在原子化服务中使用。
usingProtocol9+ HttpProtocol 使用协议。默认值由系统自动指定。
原子化服务API: 从API version 11开始,该接口支持在原子化服务中使用。
usingProxy10+ boolean |HttpProxy HTTP代理配置,该项不配置时表示不使用代理。
- 当usingProxy为布尔类型true时,使用默认网络代理,为false时,不使用代理。
- 当usingProxy为HttpProxy类型时,使用指定网络代理。
原子化服务API: 从API version 11开始,该接口支持在原子化服务中使用。
caPath10+ string 如果设置了此参数,系统将使用用户指定路径的CA证书(开发者需保证该路径下CA证书的可访问性),否则将使用系统预设CA证书。
系统预设CA证书位置:/etc/ssl/certs/cacert.pem。证书路径为沙箱映射路径(开发者可通过UIAbilityContext提供的能力获取应用沙箱路径)。目前仅支持后缀名为.pem的文本格式证书。
原子化服务API: 从API version 11开始,该接口支持在原子化服务中使用。
resumeFrom11+ number 用于设置下载起始位置,该参数只能用于GET方法,不能用于其他。HTTP标准(RFC 7233第3.1节)允许服务器忽略范围请求。
- 使用HTTP PUT时,不能使用该选项,因为该选项可能与其他选项冲突。
- 取值范围是:[1,4294967296(4GB)],超出范围则不生效。
resumeTo11+ number 用于设置下载结束位置,该参数只能用于GET方法,不能用于其他。HTTP标准(RFC 7233第3.1节)允许服务器忽略范围请求。
- 使用HTTP PUT时,不能使用该选项,因为该选项可能与其他选项冲突。
- 取值范围是:[1,4294967296(4GB)],超出范围则不生效。
clientCert11+ ClientCert 支持传输客户端证书。
dnsOverHttps11+ string 设置使用HTTPS协议的服务器进行DNS解析。
- 参数必须以以下格式进行URL编码:”https:// host:port/path”。
dnsServers11+ Array<string> 设置指定的DNS服务器进行DNS解析。
- 最多可以设置3个DNS解析服务器。如果有3个以上,只取前3个。
- 服务器必须是IPV4或者IPV6地址。
maxLimit11+ number 响应消息的最大字节限制。
默认值为5*1024*1024,以字节为单位。最大值为100*1024*1024,以字节为单位。
multiFormDataList11+ Array<MultiFormData> 当’content-Type’为’multipart/form-data’时,则上传该字段定义的数据字段表单列表。
certificatePinning12+ CertificatePinning |CertificatePinning[] 支持动态设置证书锁定配置,可以传入单个或多个证书PIN码。
addressFamily15+ AddressFamily 支持解析目标域名时限定地址类型。
remoteValidation18+ RemoteValidation 证书颁发机构(CA),用于验证远程服务器的身份。如果未设置此字段,系统CA将用于验证远程服务器的标识。
原子化服务API: 从API version 18开始,该接口支持在原子化服务中使用。
tlsOptions18+ TlsOptions TLS配置。
原子化服务API: 从API version 18开始,该接口支持在原子化服务中使用。
serverAuthentication18+ ServerAuthentication 安全连接期间的服务器身份验证配置。默认不认证。
原子化服务API: 从API version 18开始,该接口支持在原子化服务中使用。

RequestMethod

HTTP 请求方法。

原子化服务API: 从API version 11开始,该接口支持在原子化服务中使用。

系统能力:SystemCapability.Communication.NetStack

名称 说明
OPTIONS “OPTIONS” OPTIONS方法描述了目标资源的通信选项。
GET “GET” GET方法请求指定资源的表示。使用GET的请求应该只检索数据,不应该包含请求内容。
HEAD “HEAD” HEAD方法请求与GET请求相同的响应,但没有响应主体。
POST “POST” POST方法将实体提交给指定的资源,通常会导致服务器上的状态更改。
PUT “PUT” PUT方法将目标资源的所有当前表示替换为请求内容。
DELETE “DELETE” DELETE方法用于删除指定的资源。
TRACE “TRACE” TRACE方法沿到达目标资源的路径执行消息环回测试。
CONNECT “CONNECT” CONNECT方法建立到由目标资源标识的服务器的隧道。

ResponseCode

发起请求返回的响应码。

系统能力:SystemCapability.Communication.NetStack

名称 说明
OK 200 请求成功。用于GET与POST请求。
原子化服务API: 从API version 11开始,该接口支持在原子化服务中使用。
CREATED 201 已创建。请求成功并已创建新资源。
原子化服务API: 从API version 11开始,该接口支持在原子化服务中使用。
ACCEPTED 202 已接受。请求已被接受,但未处理完成。
原子化服务API: 从API version 11开始,该接口支持在原子化服务中使用。
NOT_AUTHORITATIVE 203 非授权信息。请求成功。
原子化服务API: 从API version 11开始,该接口支持在原子化服务中使用。
NO_CONTENT 204 无内容。服务器成功处理,但未返回内容。
原子化服务API: 从API version 11开始,该接口支持在原子化服务中使用。
RESET 205 重置内容。
原子化服务API: 从API version 11开始,该接口支持在原子化服务中使用。
PARTIAL 206 部分内容。服务器成功处理了部分GET请求。
原子化服务API: 从API version 11开始,该接口支持在原子化服务中使用。
MULT_CHOICE 300 多种选择。
原子化服务API: 从API version 11开始,该接口支持在原子化服务中使用。
MOVED_PERM 301 永久移动。请求的资源已被永久的移动到新URI,返回信息会包括新的URI,浏览器会自动定向到新URI。
原子化服务API: 从API version 11开始,该接口支持在原子化服务中使用。
MOVED_TEMP 302 临时移动。
原子化服务API: 从API version 11开始,该接口支持在原子化服务中使用。
SEE_OTHER 303 查看其它地址。
原子化服务API: 从API version 11开始,该接口支持在原子化服务中使用。
NOT_MODIFIED 304 未修改。
原子化服务API: 从API version 11开始,该接口支持在原子化服务中使用。
USE_PROXY 305 使用代理。
原子化服务API: 从API version 11开始,该接口支持在原子化服务中使用。
BAD_REQUEST 400 客户端请求的语法错误,服务器无法理解。
原子化服务API: 从API version 11开始,该接口支持在原子化服务中使用。
UNAUTHORIZED 401 请求需要用户的身份认证。
原子化服务API: 从API version 11开始,该接口支持在原子化服务中使用。
PAYMENT_REQUIRED 402 保留字段,将来使用。
原子化服务API: 从API version 11开始,该接口支持在原子化服务中使用。
FORBIDDEN 403 服务器理解请求客户端的请求,但是拒绝执行此请求。
原子化服务API: 从API version 11开始,该接口支持在原子化服务中使用。
NOT_FOUND 404 服务器无法根据客户端的请求找到资源(网页)。
原子化服务API: 从API version 11开始,该接口支持在原子化服务中使用。
BAD_METHOD 405 客户端请求中的方法被禁止。
原子化服务API: 从API version 11开始,该接口支持在原子化服务中使用。
NOT_ACCEPTABLE 406 服务器无法根据客户端请求的内容特性完成请求。
原子化服务API: 从API version 11开始,该接口支持在原子化服务中使用。
PROXY_AUTH 407 请求需要代理的身份认证。
原子化服务API: 从API version 11开始,该接口支持在原子化服务中使用。
CLIENT_TIMEOUT 408 请求超时。
原子化服务API: 从API version 11开始,该接口支持在原子化服务中使用。
CONFLICT 409 服务器完成客户端的PUT请求时可能返回此代码,服务器处理请求时发生了冲突。
原子化服务API: 从API version 11开始,该接口支持在原子化服务中使用。
GONE 410 客户端请求的资源已经不存在。
原子化服务API: 从API version 11开始,该接口支持在原子化服务中使用。
LENGTH_REQUIRED 411 服务器无法处理客户端发送的不带Content-Length的请求信息。
原子化服务API: 从API version 11开始,该接口支持在原子化服务中使用。
PRECON_FAILED 412 客户端请求信息的先决条件错误。
原子化服务API: 从API version 11开始,该接口支持在原子化服务中使用。
ENTITY_TOO_LARGE 413 由于请求的实体过大,服务器无法处理,因此拒绝请求。
原子化服务API: 从API version 11开始,该接口支持在原子化服务中使用。
REQ_TOO_LONG 414 请求的URI过长(URI通常为网址),服务器无法处理。
原子化服务API: 从API version 11开始,该接口支持在原子化服务中使用。
UNSUPPORTED_TYPE 415 服务器无法处理请求的格式。
原子化服务API: 从API version 11开始,该接口支持在原子化服务中使用。
RANGE_NOT_SATISFIABLE12+ 416 请求范围不符合要求。
原子化服务API: 从API version 12开始,该接口支持在原子化服务中使用。
INTERNAL_ERROR 500 服务器内部错误,无法完成请求。
原子化服务API: 从API version 11开始,该接口支持在原子化服务中使用。
NOT_IMPLEMENTED 501 服务器不支持请求的功能,无法完成请求。
原子化服务API: 从API version 11开始,该接口支持在原子化服务中使用。
BAD_GATEWAY 502 充当网关或代理的服务器,从远端服务器接收到了一个无效的请求。
原子化服务API: 从API version 11开始,该接口支持在原子化服务中使用。
UNAVAILABLE 503 由于超载或系统维护,服务器暂时无法处理客户端的请求。
原子化服务API: 从API version 11开始,该接口支持在原子化服务中使用。
GATEWAY_TIMEOUT 504 充当网关或代理的服务器,未及时从远端服务器获取请求。
原子化服务API: 从API version 11开始,该接口支持在原子化服务中使用。
VERSION 505 服务器请求的HTTP协议的版本。
原子化服务API: 从API version 11开始,该接口支持在原子化服务中使用。

HttpResponse

request方法回调函数的返回值类型。

系统能力:SystemCapability.Communication.NetStack

名称 类型 必填 说明
result string |Object |ArrayBuffer HTTP请求根据响应头中content-type类型返回对应的响应格式内容,若HttpRequestOptions无expectDataType字段,按如下规则返回:
- application/json:返回JSON格式的字符串。
- application/octet-stream:ArrayBuffer。
- image:ArrayBuffer。
- 其他:string。
若HttpRequestOption有expectDataType字段,开发者需传入与服务器返回类型相同的数据类型。
原子化服务API: 从API version 11开始,该接口支持在原子化服务中使用。
resultType9+ HttpDataType 返回值类型。
原子化服务API: 从API version 11开始,该接口支持在原子化服务中使用。
responseCode ResponseCode |number 回调函数执行成功时,此字段为ResponseCode。若执行失败,错误码将会从AsyncCallback中的err字段返回。
原子化服务API: 从API version 11开始,该接口支持在原子化服务中使用。
header Object 发起HTTP请求返回来的响应头。当前返回的是JSON格式字符串,如需具体字段内容,需开发者自行解析。常见字段及解析方式如下:
- content-type:header[‘content-type’]。
- status-line:header[‘status-line’]。
- date:header.date/header[‘date’]。
- server:header.server/header[‘server’]。
原子化服务API: 从API version 11开始,该接口支持在原子化服务中使用。
cookies8+ string 服务器返回的原始cookies。开发者可自行处理。
原子化服务API: 从API version 11开始,该接口支持在原子化服务中使用。
performanceTiming11+ PerformanceTiming HTTP请求的各个阶段的耗时。

ClientCert11+

客户端证书类型。

系统能力:SystemCapability.Communication.NetStack

名称 类型 必填 说明
certPath string 证书路径。
certType CertType 证书类型,默认是PEM。
keyPath string 证书密钥的路径。
keyPassword string 证书密钥的密码。默认值为空字符串。

PerformanceTiming11+

性能打点(单位:毫秒)。

系统能力:SystemCapability.Communication.NetStack

名称 类型 必填 说明
dnsTiming number request请求到DNS解析完成耗时。
tcpTiming number request请求到TCP连接完成耗时。
tlsTiming number request请求到TLS连接完成耗时。
firstSendTiming number request请求到开始发送第一个字节的耗时。
firstReceiveTiming number request请求到接收第一个字节的耗时。
totalFinishTiming number request请求到完成请求的耗时。
redirectTiming number request请求到完成所有重定向步骤的耗时。
responseHeaderTiming number request请求到header解析完成的耗时。
responseBodyTiming number request请求到body解析完成的耗时。
totalTiming number request请求回调到应用程序的耗时。

DataReceiveProgressInfo11+

数据接收信息。

原子化服务API: 从API version 15开始,该接口支持在原子化服务中使用。

系统能力:SystemCapability.Communication.NetStack

名称 类型 必填 说明
receiveSize number 已接收的数据量(单位:字节)。
totalSize number 总共要接收的数据量(单位:字节)。

DataSendProgressInfo11+

数据发送信息。

原子化服务API: 从API version 15开始,该接口支持在原子化服务中使用。

系统能力:SystemCapability.Communication.NetStack

属性

名称 类型 必填 说明
sendSize number 每次发送的数据量(单位:字节)。
totalSize number 总共要发送的数据量(单位:字节)。

MultiFormData11+

多部分表单数据的类型。

系统能力:SystemCapability.Communication.NetStack

名称 类型 必填 说明
name string 数据名称。
contentType string 数据类型,如’text/plain’,’image/png’, ‘image/jpeg’, ‘audio/mpeg’, ‘video/mp4’等。
remoteFileName string 上传到服务器保存为文件的名称。
data string |Object |ArrayBuffer 表单数据内容。
filePath string 此参数根据文件的内容设置mime部件的正文内容。用于代替data将文件数据设置为数据内容,如果data为空,则必须设置filePath。如果data有值,则filePath不会生效。

http.createHttpResponseCache9+

createHttpResponseCache(cacheSize?: number): HttpResponseCache

创建一个HttpResponseCache对象,可用于存储HTTP请求的响应数据。对象中可调用flushdelete方法,cacheSize指定缓存大小。

原子化服务API: 从API version 11开始,该接口支持在原子化服务中使用。

系统能力:SystemCapability.Communication.NetStack

参数:

参数名 类型 必填 说明
cacheSize number 缓存大小。最大为10*1024*1024(10MB),默认最大。

返回值:

类型 说明
HttpResponseCache 返回一个存储HTTP访问请求响应的对象。

示例:

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

let httpResponseCache = http.createHttpResponseCache();

HttpResponseCache9+

存储HTTP访问请求响应的对象。在调用HttpResponseCache的方法前,需要先通过createHttpResponseCache()创建一个任务。

响应头中的相应关键字使用

  • Cache-Control:用于指定缓存策略,如no-cache, no-store, max-age, public, private等。

  • Expires:指定资源的过期时间,格式为GMT时间。

  • ETag:用于资源版本标识,客户端可以使用If-None-Match请求头来验证资源是否已更改。

  • Last-Modified:指定资源最后修改时间,客户端可以使用If-Modified-Since请求头来验证资源是否已更改。

  • Vary:指定哪些请求头的值会影响缓存的响应,用于区分不同的缓存版本。

使用这些关键字时,服务器端需要正确配置响应头,客户端则需要根据这些响应头来决定是否使用缓存的资源,以及如何验证资源是否是最新的。正确的缓存策略可以显著提高应用的性能和用户体验。

如何设置Cache-Control头

Cache-Control为通用报头,但通常是在服务器端进行的,允许定义一个响应资源应该何时、如何被缓存以及缓存多长时间。以下是一些常用的Cache-Control指令及其含义:

  • no-cache:表示在使用缓存前,必须先去源服务器校验资源的有效性。如果资源未变更,则响应状态码为304(Not Modified),不发送资源内容,使用缓存中的资源。如果资源已经过期,则响应状态码为200(OK),并发送资源内容。

  • no-store:表示不允许缓存资源,每次请求都必须从服务器获取资源。

  • max-age:指定缓存的最大时间(以秒为单位)。例如,Cache-Control: max-age=3600表示缓存的有效期为1小时。

  • public:表明响应可以被任何对象(包括:发送请求的客户端,代理服务器等)缓存。

  • private:表明响应只能被单个用户缓存,不能作为共享缓存(即代理服务器不能缓存)。

  • must-revalidate:表示必须在使用缓存前验证旧资源的状态,并且在缓存过期后,需要重新验证资源。

  • no-transform:表示不允许代理服务器修改响应内容。

  • proxy-revalidate:与must-revalidate类似,但仅适用于共享缓存。

  • s-maxage:类似于max-age,但仅适用于共享缓存。

flush9+

flush(callback: AsyncCallback<void>): void

将缓存中的数据写入文件系统,以便在下一个HTTP请求中访问所有缓存数据,使用callback方式作为异步方法。缓存数据包括:响应头(header)、响应体(result)、cookies、请求时间(requestTime)和响应时间(responseTime)。

原子化服务API: 从API version 11开始,该接口支持在原子化服务中使用。

系统能力:SystemCapability.Communication.NetStack

参数:

参数名 类型 必填 说明
callback AsyncCallback<void> 回调函数。返回写入结果。当写入成功时,err为undefined,否则为错误对象。

示例:

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));
    // 当该请求使用完毕时,开发者务必调用destroy方法主动销毁该JavaScript Object。
    httpRequest.destroy();
  }
});

flush9+

flush(): Promise<void>

将缓存中的数据写入文件系统,以便在下一个HTTP请求中访问所有缓存数据,使用Promise方式作为异步方法。

原子化服务API: 从API version 11开始,该接口支持在原子化服务中使用。

系统能力:SystemCapability.Communication.NetStack

返回值:

类型 说明
Promise<void> Promise对象。无返回结果的Promise对象。

示例:

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

禁用缓存并删除其中的数据,使用callback方式作为异步方法。

原子化服务API: 从API version 11开始,该接口支持在原子化服务中使用。

系统能力:SystemCapability.Communication.NetStack

参数:

参数名 类型 必填 说明
callback AsyncCallback<void> 回调函数。当删除成功时,err为undefined,否则为错误对象。

示例:

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>

禁用缓存并删除其中的数据,使用Promise方式作为异步方法。

原子化服务API: 从API version 11开始,该接口支持在原子化服务中使用。

系统能力:SystemCapability.Communication.NetStack

返回值:

类型 说明
Promise<void> Promise对象。无返回结果的Promise对象。

示例:

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+

HTTP的数据类型。

原子化服务API: 从API version 11开始,该接口支持在原子化服务中使用。

系统能力:SystemCapability.Communication.NetStack

|名称|值|说明 | |——————|–|———–| |STRING |0|字符串类型。| |OBJECT |1|对象类型。 | |ARRAY_BUFFER |2|二进制数组类型。|

HttpProtocol9+

HTTP协议版本。

系统能力:SystemCapability.Communication.NetStack

名称 说明
HTTP1_1 0 协议HTTP1.1。
原子化服务API: 从API version 11开始,该接口支持在原子化服务中使用。
HTTP2 1 协议HTTP2。
原子化服务API: 从API version 11开始,该接口支持在原子化服务中使用。
HTTP311+ 2 协议HTTP3,若系统或服务器不支持,则使用低版本的HTTP协议请求。
注意: 仅对HTTPS的URL生效,HTTP则会请求失败。

CertType11+

枚举,证书类型。

系统能力:SystemCapability.Communication.NetStack

名称 说明
PEM PEM 证书类型PEM。
DER DER 证书类型DER。
P12 P12 证书类型P12。

CertificatePinning12+

由应用配置的证书。

系统能力:SystemCapability.Communication.NetStack

| 名称| 类型| 必填|说明 | |——————|—-|–|———–| |publicKeyHash |string|是|字符串类型的证书PIN码。| |hashAlgorithm |‘SHA-256’| 是|加密算法,当前仅支持该算法。|

HttpProxy10+

type HttpProxy = connection.HttpProxy

网络代理配置信息。

原子化服务API: 从API version 11开始,该接口支持在原子化服务中使用。

系统能力:SystemCapability.Communication.NetStack

类型 说明
connection.HttpProxy 网络代理配置信息。

AddressFamily15+

枚举,解析目标域名时限定的地址类型。

系统能力:SystemCapability.Communication.NetStack

名称 说明
DEFAULT CURL_IPRESOLVE_WHATEVER 设置此选项后,系统将自行选择目标域名的IPv4地址或IPv6地址。
ONLY_V4 CURL_IPRESOLVE_V4 设置此选项后,系统仅解析目标域名的IPv4地址,忽略IPv6地址。
ONLY_V6 CURL_IPRESOLVE_V6 设置此选项后,系统仅解析目标域名的IPv6地址,忽略IPv4地址。

RemoteValidation18+

type RemoteValidation = ‘system’|‘skip’

证书颁发机构(CA),用于验证远程服务器的身份,可以通过RemoteValidation配置使用系统CA或跳过验证远程服务器CA。

原子化服务API: 从API version 18开始,该接口支持在原子化服务中使用。

系统能力:SystemCapability.Communication.NetStack

类型 说明
‘system’ 表示使用系统CA配置验证。
‘skip’ 跳过验证远程服务器CA。

Credential18+

会话中服务器身份验证设置所使用的身份验证凭据,包括用户名和密码。

原子化服务API: 从API version 18开始,该接口支持在原子化服务中使用。

系统能力:SystemCapability.Communication.NetStack

| 名称| 类型| 只读|可选|说明 | |——————|—-|–|–|———–| |username |string|否|否|用于身份验证的用户名。默认值为’ ‘。| |password |string| 否|否|用于身份验证的密码。默认值为’ ‘。|

ServerAuthentication18+

HTTP服务器身份验证。

原子化服务API: 从API version 18开始,该接口支持在原子化服务中使用。

系统能力:SystemCapability.Communication.NetStack

名称 类型 只读 可选 说明
credential Credential 服务器的凭证。默认值为undefined。
authenticationType AuthenticationType 服务器的认证类型。如果没有设置,需与服务器协商。

TlsConfig18+

TLS加密版本及套件配置。

原子化服务API: 从API version 18开始,该接口支持在原子化服务中使用。

系统能力:SystemCapability.Communication.NetStack

名称 类型 只读 可选 说明
tlsVersionMin TlsVersion TLS最低版本号。
tlsVersionMax TlsVersion TLS最高版本号。
cipherSuites CipherSuite[] 声明加密套件类型的数组。

TlsVersion18+

枚举,TLS版本号。

原子化服务API: 从API version 18开始,该接口支持在原子化服务中使用。

系统能力:SystemCapability.Communication.NetStack

名称 说明
TLS_V_1_0 4 TLS版本号1.0。
TLS_V_1_1 5 TLS版本号1.1。
TLS_V_1_2 6 TLS版本号1.2。
TLS_V_1_3 7 TLS版本号1.3。

TlsOptions18+

type TlsOptions = ‘system’|TlsConfig

TLS配置。

原子化服务API: 从API version 18开始,该接口支持在原子化服务中使用。

系统能力:SystemCapability.Communication.NetStack

类型 说明
‘system’ 表示使用系统的TLS版本,是未进行TLS设置的默认值,值固定为’system’字符串。
TlsOptions 表示使用自定义的TLS版本号和加密套件。

RemoteValidation18+

type RemoteValidation = ‘system’|‘skip’

验证远程服务器身份的方式。

原子化服务API: 从API version 18开始,该接口支持在原子化服务中使用。

系统能力:SystemCapability.Communication.NetStack

类型 说明
‘system’ 表示使用系统CA验证远端服务器身份,值固定为’system’字符串,是未配置时的默认值。
‘skip’ 表示跳过验证远端服务器身份流程,值固定为’skip’字符串。

AuthenticationType18+

type AuthenticationType = ‘basic’|‘ntlm’|‘digest’

在会话中的服务器身份验证时可以设置使用不同的身份验证机制。

原子化服务API: 从API version 18开始,该接口支持在原子化服务中使用。

系统能力:SystemCapability.Communication.NetStack

类型 说明
‘basic’ 表示使用基本认证方式,值固定为’basic’字符串。
‘ntlm’ 表示使用ntlm认证方式,值固定为’ntlm’字符串。
‘digest’ 表示使用摘要认证方式,值固定为’digest’字符串。

CipherSuite18+

type CipherSuite = TlsV13CipherSuite

加密套件声明函数。

原子化服务API: 从API version 18开始,该接口支持在原子化服务中使用。

系统能力:SystemCapability.Communication.NetStack

类型 说明
TlsV13CipherSuite 表示值的类型为TlsV13CipherSuite

TlsV13CipherSuite18+

type TlsV13CipherSuite = TlsV12CipherSuite|TlsV13SpecificCipherSuite

TLS1.3的加密套件声明函数,支持TLS1.3版本,兼容TLS1.2版本。

原子化服务API: 从API version 18开始,该接口支持在原子化服务中使用。

系统能力:SystemCapability.Communication.NetStack

类型 说明
TlsV12CipherSuite 表示值的类型为TlsV11CipherSuite
TlsV13SpecificCipherSuite 表示值的类型为TlsV13SpecificCipherSuite

TlsV12CipherSuite18+

type TlsV12CipherSuite = TlsV11CipherSuite|TlsV12SpecificCipherSuite

TLS1.2的加密套件声明函数,支持TLS1.2版本,兼容TLS1.1版本。

原子化服务API: 从API version 18开始,该接口支持在原子化服务中使用。

系统能力:SystemCapability.Communication.NetStack

类型 说明
TlsV11CipherSuite 表示值的类型为TlsV11CipherSuite
TlsV12SpecificCipherSuite 表示值的类型为TlsV12SpecificCipherSuite

TlsV11CipherSuite18+

type TlsV11CipherSuite = TlsV10CipherSuite

TLS1.1的加密套件声明函数,与TLS1.0的加密套件相同。

原子化服务API: 从API version 18开始,该接口支持在原子化服务中使用。

系统能力:SystemCapability.Communication.NetStack

类型 说明
TlsV10CipherSuite 表示值的类型为TlsV10CipherSuite

TlsV10CipherSuite18+

type TlsV10CipherSuite = TlsV10SpecificCipherSuite

TLS1.0的加密套件声明函数。

原子化服务API: 从API version 18开始,该接口支持在原子化服务中使用。

系统能力:SystemCapability.Communication.NetStack

类型 说明
TlsV10SpecificCipherSuite 表示值的类型为TlsV10SpecificCipherSuite

TlsV13SpecificCipherSuite18+

type TlsV13SpecificCipherSuite = ‘TLS_AES_128_GCM_SHA256’|‘TLS_AES_256_GCM_SHA384’|‘TLS_CHACHA20_POLY1305_SHA256’

TLS1.3及以上版本支持的加密套件。

原子化服务API: 从API version 18开始,该接口支持在原子化服务中使用。

系统能力:SystemCapability.Communication.NetStack

类型 说明
‘TLS_AES_128_GCM_SHA256’ 表示值的类型为字符串,可取’TLS_AES_128_GCM_SHA256’。
‘TLS_AES_256_GCM_SHA384’ 表示值的类型为字符串,可取’TLS_AES_256_GCM_SHA384’。
‘TLS_CHACHA20_POLY1305_SHA256’ 表示值的类型为字符串,可取’TLS_CHACHA20_POLY1305_SHA256’。

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’

TLS1.2及以上版本支持的加密套件。

原子化服务API: 从API version 18开始,该接口支持在原子化服务中使用。

系统能力:SystemCapability.Communication.NetStack

类型 说明
‘TLS_ECDHE_ECDSA_WITH_AES_128_GCM_SHA256’ 表示值的类型为字符串,可取’TLS_ECDHE_ECDSA_WITH_AES_128_GCM_SHA256’。
‘TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256’ 表示值的类型为字符串,可取’TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256’。
‘TLS_ECDHE_ECDSA_WITH_AES_256_GCM_SHA384’ 表示值的类型为字符串,可取’TLS_ECDHE_ECDSA_WITH_AES_256_GCM_SHA384’。
‘TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384’ 表示值的类型为字符串,可取’TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384’。
‘TLS_ECDHE_ECDSA_WITH_CHACHA20_POLY1305_SHA256’ 表示值的类型为字符串,可取’TLS_ECDHE_ECDSA_WITH_CHACHA20_POLY1305_SHA256’。
‘TLS_ECDHE_RSA_WITH_CHACHA20_POLY1305_SHA256’ 表示值的类型为字符串,可取’TLS_ECDHE_RSA_WITH_CHACHA20_POLY1305_SHA256’。
‘TLS_RSA_WITH_AES_128_GCM_SHA256’ 表示值的类型为字符串,可取’TLS_RSA_WITH_AES_128_GCM_SHA256’。
‘TLS_RSA_WITH_AES_256_GCM_SHA384’ 表示值的类型为字符串,可取’TLS_RSA_WITH_AES_256_GCM_SHA384’。

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’

TLS1.0及以上版本支持的加密套件。

原子化服务API: 从API version 18开始,该接口支持在原子化服务中使用。

系统能力:SystemCapability.Communication.NetStack

类型 说明
‘TLS_ECDHE_ECDSA_WITH_AES_128_CBC_SHA’ 表示值的类型为字符串,可取’TLS_ECDHE_ECDSA_WITH_AES_128_CBC_SHA’。
‘TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA’ 表示值的类型为字符串,可取’TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA’。
‘TLS_ECDHE_ECDSA_WITH_AES_256_CBC_SHA’ 表示值的类型为字符串,可取’TLS_ECDHE_ECDSA_WITH_AES_256_CBC_SHA’。
‘TLS_ECDHE_RSA_WITH_AES_256_CBC_SHA’ 表示值的类型为字符串,可取’TLS_ECDHE_RSA_WITH_AES_256_CBC_SHA’。
‘TLS_RSA_WITH_AES_128_CBC_SHA’ 表示值的类型为字符串,可取’TLS_RSA_WITH_AES_128_CBC_SHA’。
‘TLS_RSA_WITH_AES_256_CBC_SHA’ 表示值的类型为字符串,可取’TLS_RSA_WITH_AES_256_CBC_SHA’。
‘TLS_RSA_WITH_3DES_EDE_CBC_SHA’ 表示值的类型为字符串,可取’TLS_RSA_WITH_3DES_EDE_CBC_SHA’。

你可能感兴趣的鸿蒙文章

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

0  赞