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

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

说明:

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

导入模块

import http from '@ohos.net.http';

完整示例

// 引入包名
import http from '@ohos.net.http';
import { BusinessError } from '@ohos.base';

// 每一个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));
});

class ExtraData {
  public data: string;

  constructor(data: string) {
    this.data = data;
  }
}

class Header {
  public contentType: string;

  constructor(contentType: string) {
    this.contentType = contentType;
  }
}

httpRequest.request(// 填写HTTP请求的URL地址,可以带参数也可以不带参数。URL地址需要开发者自定义。请求的参数可以在extraData中指定
  "EXAMPLE_URL",
  {
    method: http.RequestMethod.POST, // 可选,默认为http.RequestMethod.GET
    // 当使用POST请求时此字段用于传递内容
    extraData: new 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开始支持该属性
    caPath: "", // 可选,默认使用系统预设CA证书,自API 10开始支持该属性
  },
  (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.info('error:' + JSON.stringify(err));
      // 取消订阅HTTP响应头事件
      httpRequest.off('headersReceive');
      // 当该请求使用完毕时,开发者务必调用destroy方法主动销毁该JavaScript Object。
      httpRequest.destroy();
    }
  });

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

http.createHttp

createHttp(): HttpRequest

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

说明: 当该请求使用完毕时,须调用destroy方法主动销毁HttpRequest对象。

系统能力:SystemCapability.Communication.NetStack

返回值:

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

示例:

import http from '@ohos.net.http';

let httpRequest = http.createHttp();

HttpRequest

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

request

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

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

说明: 此接口仅支持数据大小为5M以内的数据接收。

需要权限:ohos.permission.INTERNET

系统能力:SystemCapability.Communication.NetStack

参数:

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

错误码:

错误码ID 错误信息
401 Parameter error.
201 Permission denied.
2300001 Unsupported protocol.
2300003 URL using bad/illegal format or missing URL.
2300005 Couldn't resolve proxy name.
2300006 Couldn't resolve host name.
2300007 Couldn't connect to server.
2300008 Weird server reply.
2300009 Access denied to remote resource.
2300016 Error in the HTTP2 framing layer.
2300018 Transferred a partial file.
2300023 Failed writing received data to disk/application.
2300025 Upload failed.
2300026 Failed to open/read local data from file/application.
2300027 Out of memory.
2300028 Timeout was reached.
2300047 Number of redirects hit maximum amount.
2300052 Server returned nothing (no headers, no data).
2300055 Failed sending data to the peer.
2300056 Failure when receiving data from the peer.
2300058 Problem with the local SSL certificate.
2300059 Couldn't use specified SSL cipher.
2300060 SSL peer certificate or SSH remote key was not OK.
2300061 Unrecognized or bad HTTP Content or Transfer-Encoding.
2300063 Maximum file size exceeded.
2300070 Disk full or allocation exceeded.
2300073 Remote file already exists.
2300077 Problem with the SSL CA cert (path? access rights?).
2300078 Remote file not found.
2300094 An authentication function returned an error.
2300999 Unknown Other Error.

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

示例:

import http from '@ohos.net.http';

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

request

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

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

说明: 此接口仅支持数据大小为5M以内的数据接收。

需要权限:ohos.permission.INTERNET

系统能力:SystemCapability.Communication.NetStack

参数:

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

错误码:

错误码ID 错误信息
401 Parameter error.
201 Permission denied.
2300001 Unsupported protocol.
2300003 URL using bad/illegal format or missing URL.
2300005 Couldn't resolve proxy name.
2300006 Couldn't resolve host name.
2300007 Couldn't connect to server.
2300008 Weird server reply.
2300009 Access denied to remote resource.
2300016 Error in the HTTP2 framing layer.
2300018 Transferred a partial file.
2300023 Failed writing received data to disk/application.
2300025 Upload failed.
2300026 Failed to open/read local data from file/application.
2300027 Out of memory.
2300028 Timeout was reached.
2300047 Number of redirects hit maximum amount.
2300052 Server returned nothing (no headers, no data).
2300055 Failed sending data to the peer.
2300056 Failure when receiving data from the peer.
2300058 Problem with the local SSL certificate.
2300059 Couldn't use specified SSL cipher.
2300060 SSL peer certificate or SSH remote key was not OK.
2300061 Unrecognized or bad HTTP Content or Transfer-Encoding.
2300063 Maximum file size exceeded.
2300070 Disk full or allocation exceeded.
2300073 Remote file already exists.
2300077 Problem with the SSL CA cert (path? access rights?).
2300078 Remote file not found.
2300094 An authentication function returned an error.
2300999 Unknown Other Error.

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

示例:

import http from '@ohos.net.http';

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

request

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

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

说明: 此接口仅支持数据大小为5M以内的数据接收。

需要权限:ohos.permission.INTERNET

系统能力:SystemCapability.Communication.NetStack

参数:

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

返回值:

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

错误码:

错误码ID 错误信息
401 Parameter error.
201 Permission denied.
2300001 Unsupported protocol.
2300003 URL using bad/illegal format or missing URL.
2300005 Couldn't resolve proxy name.
2300006 Couldn't resolve host name.
2300007 Couldn't connect to server.
2300008 Weird server reply.
2300009 Access denied to remote resource.
2300016 Error in the HTTP2 framing layer.
2300018 Transferred a partial file.
2300023 Failed writing received data to disk/application.
2300025 Upload failed.
2300026 Failed to open/read local data from file/application.
2300027 Out of memory.
2300028 Timeout was reached.
2300047 Number of redirects hit maximum amount.
2300052 Server returned nothing (no headers, no data).
2300055 Failed sending data to the peer.
2300056 Failure when receiving data from the peer.
2300058 Problem with the local SSL certificate.
2300059 Couldn't use specified SSL cipher.
2300060 SSL peer certificate or SSH remote key was not OK.
2300061 Unrecognized or bad HTTP Content or Transfer-Encoding.
2300063 Maximum file size exceeded.
2300070 Disk full or allocation exceeded.
2300073 Remote file already exists.
2300077 Problem with the SSL CA cert (path? access rights?).
2300078 Remote file not found.
2300094 An authentication function returned an error.
2300999 Unknown Other Error.

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

示例:

import http from '@ohos.net.http';

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

destroy

destroy(): void

中断请求任务。

系统能力:SystemCapability.Communication.NetStack

示例:

import http from '@ohos.net.http';
let httpRequest = http.createHttp();

httpRequest.destroy();

requestInStream10+

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

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

需要权限:ohos.permission.INTERNET

系统能力:SystemCapability.Communication.NetStack

参数:

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

错误码:

错误码ID 错误信息
401 Parameter error.
201 Permission denied.
2300001 Unsupported protocol.
2300003 URL using bad/illegal format or missing URL.
2300005 Couldn't resolve proxy name.
2300006 Couldn't resolve host name.
2300007 Couldn't connect to server.
2300008 Weird server reply.
2300009 Access denied to remote resource.
2300016 Error in the HTTP2 framing layer.
2300018 Transferred a partial file.
2300023 Failed writing received data to disk/application.
2300025 Upload failed.
2300026 Failed to open/read local data from file/application.
2300027 Out of memory.
2300028 Timeout was reached.
2300047 Number of redirects hit maximum amount.
2300052 Server returned nothing (no headers, no data).
2300055 Failed sending data to the peer.
2300056 Failure when receiving data from the peer.
2300058 Problem with the local SSL certificate.
2300059 Couldn't use specified SSL cipher.
2300060 SSL peer certificate or SSH remote key was not OK.
2300061 Unrecognized or bad HTTP Content or Transfer-Encoding.
2300063 Maximum file size exceeded.
2300070 Disk full or allocation exceeded.
2300073 Remote file already exists.
2300077 Problem with the SSL CA cert (path? access rights?).
2300078 Remote file not found.
2300094 An authentication function returned an error.
2300999 Unknown Other Error.

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

示例:

import http from '@ohos.net.http';
import { BusinessError } from '@ohos.base';

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

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

需要权限:ohos.permission.INTERNET

系统能力:SystemCapability.Communication.NetStack

参数:

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

错误码:

错误码ID 错误信息
401 Parameter error.
201 Permission denied.
2300001 Unsupported protocol.
2300003 URL using bad/illegal format or missing URL.
2300005 Couldn't resolve proxy name.
2300006 Couldn't resolve host name.
2300007 Couldn't connect to server.
2300008 Weird server reply.
2300009 Access denied to remote resource.
2300016 Error in the HTTP2 framing layer.
2300018 Transferred a partial file.
2300023 Failed writing received data to disk/application.
2300025 Upload failed.
2300026 Failed to open/read local data from file/application.
2300027 Out of memory.
2300028 Timeout was reached.
2300047 Number of redirects hit maximum amount.
2300052 Server returned nothing (no headers, no data).
2300055 Failed sending data to the peer.
2300056 Failure when receiving data from the peer.
2300058 Problem with the local SSL certificate.
2300059 Couldn't use specified SSL cipher.
2300060 SSL peer certificate or SSH remote key was not OK.
2300061 Unrecognized or bad HTTP Content or Transfer-Encoding.
2300063 Maximum file size exceeded.
2300070 Disk full or allocation exceeded.
2300073 Remote file already exists.
2300077 Problem with the SSL CA cert (path? access rights?).
2300078 Remote file not found.
2300094 An authentication function returned an error.
2300999 Unknown Other Error.

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

示例:

import http from '@ohos.net.http';
import { BusinessError } from '@ohos.base';

let httpRequest = http.createHttp();
httpRequest.requestInStream("EXAMPLE_URL", (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>

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

需要权限:ohos.permission.INTERNET

系统能力:SystemCapability.Communication.NetStack

参数:

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

返回值:

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

错误码:

错误码ID 错误信息
401 Parameter error.
201 Permission denied.
2300001 Unsupported protocol.
2300003 URL using bad/illegal format or missing URL.
2300005 Couldn't resolve proxy name.
2300006 Couldn't resolve host name.
2300007 Couldn't connect to server.
2300008 Weird server reply.
2300009 Access denied to remote resource.
2300016 Error in the HTTP2 framing layer.
2300018 Transferred a partial file.
2300023 Failed writing received data to disk/application.
2300025 Upload failed.
2300026 Failed to open/read local data from file/application.
2300027 Out of memory.
2300028 Timeout was reached.
2300047 Number of redirects hit maximum amount.
2300052 Server returned nothing (no headers, no data).
2300055 Failed sending data to the peer.
2300056 Failure when receiving data from the peer.
2300058 Problem with the local SSL certificate.
2300059 Couldn't use specified SSL cipher.
2300060 SSL peer certificate or SSH remote key was not OK.
2300061 Unrecognized or bad HTTP Content or Transfer-Encoding.
2300063 Maximum file size exceeded.
2300070 Disk full or allocation exceeded.
2300073 Remote file already exists.
2300077 Problem with the SSL CA cert (path? access rights?).
2300078 Remote file not found.
2300094 An authentication function returned an error.
2300999 Unknown Other Error.

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

示例:

import http from '@ohos.net.http';

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

订阅HTTP Response Header 事件。

说明: 此接口已废弃,建议使用on("headersReceive")8+替代。

系统能力:SystemCapability.Communication.NetStack

参数:

参数名 类型 必填 说明
type string 订阅的事件类型,'headerReceive'。
callback AsyncCallback<Object> 回调函数。

示例:

import http from '@ohos.net.http';
import { BusinessError } from '@ohos.base';

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

取消订阅HTTP Response Header 事件。

说明:

  1. 此接口已废弃,建议使用off("headersReceive")8+替代。

  2. 可以指定传入on中的callback取消一个订阅,也可以不指定callback清空所有订阅。

系统能力:SystemCapability.Communication.NetStack

参数:

参数名 类型 必填 说明
type string 取消订阅的事件类型,'headerReceive'。
callback AsyncCallback<Object> 回调函数。

示例:

import http from '@ohos.net.http';

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

on("headersReceive")8+

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

订阅HTTP Response Header 事件。

系统能力:SystemCapability.Communication.NetStack

参数:

参数名 类型 必填 说明
type string 订阅的事件类型:'headersReceive'。
callback Callback<Object> 回调函数。

示例:

import http from '@ohos.net.http';

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 事件。

说明: 可以指定传入on中的callback取消一个订阅,也可以不指定callback清空所有订阅。

系统能力:SystemCapability.Communication.NetStack

参数:

参数名 类型 必填 说明
type string 取消订阅的事件类型:'headersReceive'。
callback Callback<Object> 回调函数。

示例:

import http from '@ohos.net.http';

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方式作为异步方法。

系统能力:SystemCapability.Communication.NetStack

参数:

参数名 类型 必填 说明
type string 订阅的事件类型:'headersReceive'。
callback Callback<Object> 回调函数。

示例:

import http from '@ohos.net.http';

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

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

说明: 暂不支持订阅HTTP流式数据上传的相关事件。

系统能力:SystemCapability.Communication.NetStack

参数:

参数名 类型 必填 说明
type string 订阅的事件类型,'dataReceive'。
callback AsyncCallback<ArrayBuffer> 回调函数。

示例:

import http from '@ohos.net.http';

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流式响应数据接收事件。

说明: 可以指定传入on中的callback取消一个订阅,也可以不指定callback清空所有订阅。

系统能力:SystemCapability.Communication.NetStack

参数:

参数名 类型 必填 说明
type string 取消订阅的事件类型:'dataReceive'。
callback Callback<ArrayBuffer> 回调函数。

示例:

import http from '@ohos.net.http';

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

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

说明: 暂不支持订阅HTTP流式数据上传的相关事件。

系统能力:SystemCapability.Communication.NetStack

参数:

参数名 类型 必填 说明
type string 订阅的事件类型,'dataEnd'。
callback AsyncCallback<void> 回调函数。

示例:

import http from '@ohos.net.http';

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流式响应数据接收完毕事件。

说明: 可以指定传入on中的callback取消一个订阅,也可以不指定callback清空所有订阅。

系统能力:SystemCapability.Communication.NetStack

参数:

参数名 类型 必填 说明
type string 取消订阅的事件类型:'dataEnd'。
callback Callback<void> 回调函数。

示例:

import http from '@ohos.net.http';

let httpRequest = http.createHttp();
httpRequest.on("dataEnd", () => {
  console.info("Receive dataEnd !");
});
httpRequest.off("dataEnd");

on("dataReceiveProgress")10+

on(type: "dataReceiveProgress", callback: Callback<{ receiveSize: number, totalSize: number }>): void

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

说明: 暂不支持订阅HTTP流式数据上传的相关事件。

系统能力:SystemCapability.Communication.NetStack

参数:

参数名 类型 必填 说明
type string 订阅的事件类型,'dataReceiveProgress'。
callback AsyncCallback<{ receiveSize: number, totalSize: number }> 回调函数。
receiveSize:已接收的数据字节数,totalSize待接收的字节总数

示例:

import http from '@ohos.net.http';

class RequestData{
  receiveSize: number = 2000
  totalSize: number = 2000
}

let httpRequest = http.createHttp();
httpRequest.on("dataReceiveProgress", (data: RequestData) => {
  console.info("dataReceiveProgress:" + JSON.stringify(data));
});
httpRequest.off("dataReceiveProgress");

off("dataReceiveProgress")10+

off(type: "dataReceiveProgress", callback?: Callback<{ receiveSize: number, totalSize: number }>): void

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

说明: 可以指定传入on中的callback取消一个订阅,也可以不指定callback清空所有订阅。

系统能力:SystemCapability.Communication.NetStack

参数:

参数名 类型 必填 说明
type string 取消订阅的事件类型:'dataReceiveProgress'。
callback Callback<{ receiveSize: number, totalSize: number }> 回调函数。

示例:

import http from '@ohos.net.http';

class RequestData{
  receiveSize: number = 2000
  totalSize: number = 2000
}

let httpRequest = http.createHttp();
httpRequest.on("dataReceiveProgress", (data: RequestData) => {
  console.info("dataReceiveProgress:" + JSON.stringify(data));
});
httpRequest.off("dataReceiveProgress");

HttpRequestOptions(支持跨平台)

发起请求可选参数的类型和取值范围。

系统能力:SystemCapability.Communication.NetStack

名称 类型 必填 说明
method RequestMethod 请求方式,默认为GET。
extraData string | Object | ArrayBuffer 发送请求的额外数据,默认无此字段。
当HTTP请求为POST、PUT等方法时,此字段为HTTP请求的content,以UTF-8编码形式作为请求体。当'content-Type'为'application/x-www-form-urlencoded'时,请求提交的信息主体数据应在key和value进行URL转码后按照键值对"key1=value1&key2=value2&key3=value3"的方式进行编码,该字段对应的类型通常为String;当'content-Type'为'text/xml'时,该字段对应的类型通常为String;当'content-Type'为'application/json'时,该字段对应的类型通常为Object;当'content-Type'为'application/octet-stream'时,该字段对应的类型通常为ArrayBuffer;当'content-Type'为'multipart/form-data'且需上传的字段为文件时,该字段对应的类型通常为ArrayBuffer。以上信息仅供参考,并可能根据具体情况有所不同。
- 当HTTP请求为GET、OPTIONS、DELETE、TRACE、CONNECT等方法时,此字段为HTTP请求参数的补充。开发者需传入Encode编码后的string类型参数,Object类型的参数无需预编码,参数内容会拼接到URL中进行发送;ArrayBuffer类型的参数不会做拼接处理。
expectDataType9+ HttpDataType 指定返回数据的类型,默认无此字段。如果设置了此参数,系统将优先返回指定的类型。
usingCache9+ boolean 是否使用缓存,默认为true。
priority9+ number 优先级,范围[1,1000],默认是1。
header Object HTTP请求头字段。默认{'content-Type': 'application/json'}。
readTimeout number 读取超时时间。单位为毫秒(ms),默认为60000ms。
设置为0表示不会出现超时情况。
connectTimeout number 连接超时时间。单位为毫秒(ms),默认为60000ms。
usingProtocol9+ HttpProtocol 使用协议。默认值由系统自动指定。
usingProxy10+ boolean | HttpProxy 是否使用HTTP代理,默认为false,不使用代理。
- 当usingProxy为布尔类型true时,使用默认网络代理。
- 当usingProxy为HttpProxy类型时,使用指定网络代理。
caPath10+ string 如果设置了此参数,系统将使用用户指定路径的CA证书,(开发者需保证该路径下CA证书的可访问性),否则将使用系统预设CA证书,系统预设CA证书位置:/etc/ssl/certs/cacert.pem。证书路径为沙箱映射路径(开发者可通过Global.getContext().filesDir获取应用沙箱路径)。目前仅支持后缀名为.pem的文本格式证书。

RequestMethod

HTTP 请求方法。

系统能力:SystemCapability.Communication.NetStack

名称 说明
OPTIONS "OPTIONS" HTTP 请求 OPTIONS。
GET "GET" HTTP 请求 GET。
HEAD "HEAD" HTTP 请求 HEAD。
POST "POST" HTTP 请求 POST。
PUT "PUT" HTTP 请求 PUT。
DELETE "DELETE" HTTP 请求 DELETE。
TRACE "TRACE" HTTP 请求 TRACE。
CONNECT "CONNECT" HTTP 请求 CONNECT。

ResponseCode

发起请求返回的响应码。

系统能力:SystemCapability.Communication.NetStack

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

HttpResponse

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

系统能力:SystemCapability.Communication.NetStack

名称 类型 必填 说明
result string | Objectdeprecated 8+ | ArrayBuffer8+ HTTP请求根据响应头中content-type类型返回对应的响应格式内容,若HttpRequestOptions无expectDataType字段,按如下规则返回:
- application/json:返回JSON格式的字符串;
- application/octet-stream:ArrayBuffer;
- image:ArrayBuffer;
- 其他:string。
若HttpRequestOption有expectDataType字段,开发者需传入与服务器返回类型相同的数据类型。
resultType9+ HttpDataType 返回值类型。
responseCode ResponseCode | number 回调函数执行成功时,此字段为ResponseCode。若执行失败,错误码将会从AsyncCallback中的err字段返回。
header Object 发起HTTP请求返回来的响应头。当前返回的是JSON格式字符串,如需具体字段内容,需开发者自行解析。常见字段及解析方式如下:
- content-type:header['content-type'];
- status-line:header['status-line'];
- date:header.date/header['date'];
- server:header.server/header['server'];
cookies8+ string 服务器返回的 cookies。

http.createHttpResponseCache9+

createHttpResponseCache(cacheSize?: number): HttpResponseCache

创建一个默认的对象来存储HTTP访问请求的响应。

系统能力:SystemCapability.Communication.NetStack

参数:

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

返回值:

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

示例:

import http from '@ohos.net.http';

let httpResponseCache = http.createHttpResponseCache();

HttpResponseCache9+

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

flush9+

flush(callback: AsyncCallback<void>): void

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

系统能力:SystemCapability.Communication.NetStack

参数:

参数名 类型 必填 说明
callback AsyncCallback<void> 回调函数返回写入结果。

示例:

import http from '@ohos.net.http';
import { BusinessError } from '@ohos.base';

let httpResponseCache = http.createHttpResponseCache();
httpResponseCache.flush((err: BusinessError) => {
  if (err) {
    console.info('flush fail');
    return;
  }
  console.info('flush success');
});

flush9+

flush(): Promise<void>

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

系统能力:SystemCapability.Communication.NetStack

返回值:

类型 说明
Promise<void> 以Promise形式返回写入结果。

示例:

import http from '@ohos.net.http';
import { BusinessError } from '@ohos.base';

let httpResponseCache = http.createHttpResponseCache();
httpResponseCache.flush().then(() => {
  console.info('flush success');
}).catch((err: BusinessError) => {
  console.info('flush fail');
});

delete9+

delete(callback: AsyncCallback<void>): void

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

系统能力:SystemCapability.Communication.NetStack

参数:

参数名 类型 必填 说明
callback AsyncCallback<void> 回调函数返回删除结果。

示例:

import http from '@ohos.net.http';
import { BusinessError } from '@ohos.base';

let httpResponseCache = http.createHttpResponseCache();
httpResponseCache.delete((err: BusinessError) => {
  if (err) {
    console.info('delete fail');
    return;
  }
  console.info('delete success');
});

delete9+

delete(): Promise<void>

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

系统能力:SystemCapability.Communication.NetStack

返回值:

类型 说明
Promise<void> 以Promise形式返回删除结果。

示例:

import http from '@ohos.net.http';
import { BusinessError } from '@ohos.base';

let httpResponseCache = http.createHttpResponseCache();
httpResponseCache.delete().then(() => {
  console.info('delete success');
}).catch((err: Error) => {
  console.info('delete fail');
});

HttpDataType9+

http的数据类型。

系统能力:SystemCapability.Communication.NetStack

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

HttpProtocol9+

http协议版本。

系统能力:SystemCapability.Communication.NetStack

名称 说明
HTTP1_1 协议http1.1
HTTP2 协议http2