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

👇🏻👇🏻👇🏻求关注👇🏻👇🏻👇🏻



导入模块

import ohos.net.http.*

完整示例

import ohos.net.http.*
    import ohos.base.*
    import std.collection.*
    
    // 每一个httpRequest对应一个HTTP请求任务,不可复用
    let httpRequest = createHttp()
    // 用于订阅HTTP响应头,此接口会比request请求先返回。可以根据业务需要订阅此消息
    httpRequest.onHeadersReceive({header: HashMap<String, String> =>
        AppLog.info("header: ${header}")
    })
    
    let option = HttpRequestOptions(
        method: RequestMethod.POST, // 可选,默认为http.RequestMethod.GET
        // 当使用POST请求时此字段用于传递内容
        extraData: HttpData.STRING_DATA("data to send"),
        expectDataType: HttpDataType.STRING, // 可选,指定返回数据的类型
        usingCache: true, // 可选,默认为true
        priority: 1, // 可选,默认为1
        // 开发者根据自身业务需要添加header字段
        header: HashMap<String, String>([("content-type", "application/json")]),
        readTimeout: 60000, // 可选,默认为60000ms
        connectTimeout: 60000, // 可选,默认为60000ms
        usingProtocol: HttpProtocol.HTTP1_1, // 可选,协议类型默认值由系统自动指定
        usingProxy: UsingProxy.USE_DEFAULT, //可选,默认不使用网络代理,自API 10开始支持该属性
        caPath: "/path/to/cacert.pem", // 可选,默认使用系统预设CA证书,自API 10开始支持该属性
        clientCert: ClientCert(
            "/path/to/client.pem", // 默认不使用客户端证书
            "/path/to/client.key", // 若证书包含Key信息,传入空字符串
            certType: CertType.PEM, // 可选,默认使用PEM
            keyPassword: "passwordToKey" // 可选,输入key文件的密码
        ),
        multiFormDataList: [ // 可选,仅当Header中,'content-Type'为'multipart/form-data'时生效
            MultiFormData (
                "Part1", // 数据名
                "text/plain", // 数据类型
                data: STRING_DATA("Example data"), // 可选,数据内容
                remoteFileName: "example.txt" // 可选
            ),
            MultiFormData (
                "Part2", // 数据名
                "text/plain", // 数据类型
                filePath: "/data/app/el2/100/base/com.example.myapplication/haps/entry/files/fileName.txt", // 可选,传入文件路径
                remoteFileName: "fileName.txt" // 可选
            )
        ]
    )
    
    httpRequest.request(// 填写HTTP请求的URL地址,可以带参数也可以不带参数。URL地址需要开发者自定义。请求的参数可以在extraData中指定
        "http://www.example.com", { err, resp =>
            if (let Some(e) <- err) {
                Hilog.error(0, "test","exception: ${e.message}")
                throw e
            }
            if (let Some(r) <- resp) {
                Hilog.error(0, "test", "${r}")
            } else {
                Hilog.error(0, "test", "resp is none")
            }
            httpRequest.destroy()
        }, options: option)

func createHttp()

public func createHttp(): HttpRequest

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

说明

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

系统能力:SystemCapability.Communication.NetStack

返回值:

类型

说明

HttpRequest

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

示例:

import ohos.net.http.*
    
let httpRequest = createHttp()

class HttpRequest

public class HttpRequest {}

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

func request(String, (?BusinessException, ?HttpResponse) -> Unit, ?HttpRequestOptions)

public func request(url: String, callback: (?BusinessException, ?HttpResponse) -> Unit, options!: ?HttpRequestOptions = None): Unit

根据URL地址,发起HTTP网络请求,在callback回调函数中返回响应。

说明

此接口仅支持数据大小为5MB以内的数据接收。

需要权限:ohos.permission.INTERNET

系统能力:SystemCapability.Communication.NetStack

参数:

参数名

类型

必填

说明

url

String

发起网络请求的URL地址。

callback

(?BusinessException, ?HttpResponse) -> Unit

回调函数。

options

?HttpRequestOptions

参考HttpRequestOptions。

错误码:

错误码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 ohos.net.http.*
    
    let httpRequest = createHttp()
    httpRequest.request("http://www.example.com", {err, resp =>
        if (let Some(e) <- err) {
            Hilog.error(0, "test","exception: ${e.message}")
        }
        if (let Some(r) <- resp) {
            Hilog.info(0, "test", "resp: ${r}")
        } else {
            Hilog.error(0, "test", "response is none")
        }
    })

func destroy()

public func destroy(): Unit

中断请求任务。

系统能力:SystemCapability.Communication.NetStack

示例:

import ohos.net.http.*
let httpRequest = createHttp()
httpRequest.destroy()

func requestInStream(String, (?BusinessException, ?UInt32) -> Unit, ?HttpRequestOptions)

public func requestInStream(url: String, callback: (?BusinessException, ?UInt32) -> Unit, options!: ?HttpRequestOptions = None): Unit

根据URL地址和相关配置项,发起HTTP网络请求并返回流式响应,在callback回调函数中返回响应。

需要权限:ohos.permission.INTERNET

系统能力:SystemCapability.Communication.NetStack

参数:

参数名

类型

必填

说明

url

String

发起网络请求的URL地址。

callback

(?BusinessException, ?UInt32) -> Unit

回调函数。

options

?HttpRequestOptions

参考HttpRequestOptions。

错误码:

错误码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 ohos.net.http.*
    
    let httpRequest = createHttp()
    httpRequest.requestInStream("http://www.example.com", {err, code =>
        if (let Some(e) <- err) {
            Hilog.error(0, "test","exception: ${e.message}")
        }
        if (let Some(respCode) <- code) {
            Hilog.info(0, "test", "resp: ${respCode}")
        } else {
            Hilog.error(0, "test", "response is none")
        }
    })

func onHeadersReceive((HashMap<String, String>) -> Unit)

public func onHeadersReceive(callback: (HashMap<String, String>) -> Unit): Unit

订阅HTTP Response Header事件。

系统能力:SystemCapability.Communication.NetStack

参数:

参数名

类型

必填

说明

callback

(HashMap<String, String>) -> Unit

回调函数。

示例:

import ohos.net.http.*
    
    let httpRequest = createHttp()
    httpRequest.onHeadersReceive({ headers =>
        AppLog.info("headers: ${headers}")
    })

func offHeadersReceive()

public func offHeadersReceive(): Unit

取消订阅HTTP Response Header事件。

说明

清空所有订阅。

系统能力:SystemCapability.Communication.NetStack

示例:

import ohos.net.http.*
    
    let httpRequest = createHttp()
    httpRequest.onHeadersReceive({ headers =>
        AppLog.info("headers: ${headers}")
    })
    httpRequest.offHeadersReceive()

func onceHeadersReceive((HashMap<String, String>) -> Unit)

public func onceHeadersReceive(callback: (HashMap<String, String>) -> Unit): Unit

订阅HTTP Response Header事件,但是只触发一次。一旦触发之后,此函数注册的订阅器就会被移除。

系统能力:SystemCapability.Communication.NetStack

参数:

参数名

类型

必填

说明

callback

(HashMap<String, String>) -> Unit

回调函数。

示例:

import ohos.net.http.*
    
    let httpRequest = createHttp()
    httpRequest.onceHeadersReceive({ headers =>
        AppLog.info("headers: ${headers}")
    })

func onDataReceive((Array<Byte>) -> Unit)

public func onDataReceive(callback: (Array<Byte>) -> Unit): Unit

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

说明

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

系统能力:SystemCapability.Communication.NetStack

参数:

参数名

类型

必填

说明

callback

(Array<Byte>) -> Unit

回调函数。

示例:

import ohos.net.http.*
    
    let httpRequest = createHttp()
    httpRequest.onDataReceive({ data =>
        AppLog.info("data receive: ${data}")
    })

func offDataReceive()

public func offDataReceive(): Unit

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

说明

清空所有订阅。

系统能力:SystemCapability.Communication.NetStack

示例:

import ohos.net.http.*
    
let httpRequest = createHttp()
httpRequest.onDataReceive({ data =>
   AppLog.info("data receive: ${data}")
})
httpRequest.offDataReceive()

func onDataEnd(() -> Unit)

public func onDataEnd(callback: () -> Unit): Unit

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

说明

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

系统能力:SystemCapability.Communication.NetStack

参数:

参数名

类型

必填

说明

callback

() -> Unit

回调函数。

示例:

import ohos.net.http.*
    
    let httpRequest = createHttp()
    httpRequest.onDataEnd({ =>
        AppLog.info("data end")
    })

func offDataEnd()

public func offDataEnd(): Unit

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

说明

清空所有订阅。

系统能力:SystemCapability.Communication.NetStack

示例:

import ohos.net.http.*
    
    let httpRequest = createHttp()
    httpRequest.onDataEnd({ =>
        AppLog.info("data end")
    })
    httpRequest.offDataEnd()

func onDataReceiveProgress((DataReceiveProgressInfo) -> Unit)

public func onDataReceiveProgress(callback: (DataReceiveProgressInfo) -> Unit): Unit

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

说明

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

系统能力:SystemCapability.Communication.NetStack

参数:

参数名

类型

必填

说明

callback

(DataReceiveProgressInfo) -> Unit

回调函数。返回数据接收进度信息。

示例:

import ohos.net.http.*
    
    let httpRequest = createHttp()
    httpRequest.onDataReceiveProgress({ receiveInfo =>
        AppLog.info("receive data ${receiveInfo.receiveSize}, total: ${receiveInfo.totalSize}")
    })

func offDataReceiveProgress()

public func offDataReceiveProgress(): Unit

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

说明

清空所有订阅。

系统能力:SystemCapability.Communication.NetStack

示例:

import ohos.net.http.*
    
    let httpRequest = createHttp()
    httpRequest.onDataReceiveProgress({ receiveInfo =>
        AppLog.info("receive data ${receiveInfo.receiveSize}, total: ${receiveInfo.totalSize}")
    })
    httpRequest.offDataReceiveProgress()

func onDataSendProgress((DataSendProgressInfo) -> Unit)

public func onDataSendProgress(callback: (DataSendProgressInfo) -> Unit): Unit

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

系统能力:SystemCapability.Communication.NetStack

参数:

参数名

类型

必填

说明

callback

(DataSendProgressInfo) -> Unit

回调函数。返回数据发送进度信息。

示例:

import ohos.net.http.*
    
    let httpRequest = createHttp()
    httpRequest.onDataSendProgress({ sendInfo =>
        AppLog.info("send data ${sendInfo.sendSize}, total: ${sendInfo.totalSize}")
    })

func offDataSendProgress()

public func offDataSendProgress(): Unit

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

说明

清空所有订阅。

系统能力:SystemCapability.Communication.NetStack

示例:

import ohos.net.http.*
    
    let httpRequest = createHttp()
    httpRequest.onDataSendProgress({ sendInfo =>
        AppLog.info("send data ${sendInfo.sendSize}, total: ${sendInfo.totalSize}")
    })
    httpRequest.offDataSendProgress()

class HttpRequestOptions

public class HttpRequestOptions {
        public HttpRequestOptions(
            public let method!: RequestMethod = RequestMethod.GET,
            public let extraData!: ?HttpData = None,
            public let expectDataType!: ?HttpDataType = None,
            public let usingCache!: Bool = true,
            public let priority!: UInt32 = 1,
            public let header!: ?HashMap<String, String> = None,
            public let readTimeout!: UInt32 = 60000,
            public let connectTimeout!: UInt32 = 60000,
            public let usingProtocol!: ?HttpProtocol = None,
            public let usingProxy!: UsingProxy = NOT_USE,
            public let caPath!: ?String = None,
            public let resumeFrom!: ?Int64 = None,
            public let resumeTo!: ?Int64 = None,
            public let clientCert!: ?ClientCert = None,
            public let dnsOverHttps!: ?String = None,
            public let dnsServers!: ?Array<String> = None,
            public let maxLimit!: UInt32 = 5 * 1024 * 1024,
            public let multiFormDataList!: ?Array<MultiFormData> = None
        ) {}
    }

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

系统能力:SystemCapability.Communication.NetStack

名称

类型

必填

说明

method

RequestMethod

请求方式,默认为GET。

extraData

?HttpData

发送请求的额外数据,默认无此字段。

当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类型的参数不会做拼接处理。

以上信息仅供参考,并可能根据具体情况有所不同。

expectDataType

?HttpDataType

指定返回数据的类型,默认无此字段。如果设置了此参数,系统将优先返回指定的类型。

usingCache

Bool

是否使用缓存,默认为true,请求时优先读取缓存。 缓存跟随当前进程生效。新缓存会替换旧缓存。

priority

UInt32

优先级,范围[1,1000],默认是1。若传参超出范围则使用默认值1。

header

?HashMap<String, String>

HTTP请求头字段。默认{'content-Type': 'application/json'}。

readTimeout

UInt32

读取超时时间。单位为毫秒(ms),默认为60000ms。

设置为0表示不会出现超时情况。

connectTimeout

UInt32

连接超时时间。单位为毫秒(ms),默认为60000ms。

usingProtocol

?HttpProtocol

使用协议。默认值由系统自动指定。

usingProxy

UsingProxy

是否使用HTTP代理,默认为NOT_USE,不使用代理。

当usingProxy为USE_DEFAULT时,使用默认网络代理。

当usingProxy为USE_SPECIFIED类型时,使用指定网络代理。

caPath

?String

如果设置了此参数,系统将使用用户指定路径的CA证书,(开发者需保证该路径下CA证书的可访问性),否则将使用系统预设CA证书,系统预设CA证书位置:/etc/ssl/certs/cacert.pem。证书路径为沙箱映射路径(开发者可通过Global.getContext().filesDir获取应用沙箱路径)。目前仅支持后缀名为.pem的文本格式证书。

resumeFrom

?Int64

用于设置上传或下载起始位置。HTTP标准(RFC 7233第3.1节)允许服务器忽略范围请求。

使用HTTP PUT时设置此参数,可能出现未知问题。

取值范围是:1~4294967296(4GB),超出范围则不生效。无默认值。

resumeTo

?Int64

用于设置上传或下载结束位置。HTTP标准(RFC 7233第3.1节)允许服务器忽略范围请求。

使用HTTP PUT时设置此参数,可能出现未知问题。

取值范围是:1~4294967296(4GB),超出范围则不生效。无默认值。

clientCert

?ClientCert

支持传输客户端证书。

dnsOverHttps

?String

设置使用HTTPS协议的服务器进行DNS解析。

参数必须以以下格式进行URL编码:"https:// host:port/path"。

dnsServers

?Array<String>

设置指定的DNS服务器进行DNS解析。

可以设置多个DNS解析服务器,最多3个服务器。如果有3个以上,只取前3个。

服务器必须是IPV4或者IPV6地址。

maxLimit

UInt32

响应消息的最大字节限制,默认值为5MB,以字节为单位。最大值为10MB,以字节为单位。

multiFormDataList

?Array<MultiFormData>

当'content-Type'为'multipart/form-data'时,则上传该字段定义的数据字段表单列表。

enum RequestMethod

public enum RequestMethod {
        OPTIONS |
        GET |
        HEAD |
        POST |
        PUT |
        DELETE |
        TRACE |
        CONNECT
    }

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。

func getValue()

public func getValue(): String

获取RequestMethod枚举对应的字符串。

系统能力:SystemCapability.Communication.NetStack

返回值:

类型

说明

String

返回RequestMethod枚举对应的字符串。

示例:

import ohos.net.http.*
    
let getMethod = RequestMethod.GET.getvalue()

enum ResponseCode

public enum ResponseCode {
        OK
        | CREATED
        | ACCEPTED
        | NOT_AUTHORITATIVE
        | NO_CONTENT
        | RESET
        | PARTIAL
        | MULT_CHOICE
        | MOVED_PERM
        | MOVED_TEMP
        | SEE_OTHER
        | NOT_MODIFIED
        | USE_PROXY
        | BAD_REQUEST
        | UNAUTHORIZED
        | PAYMENT_REQUIRED
        | FORBIDDEN
        | NOT_FOUND
        | BAD_METHOD
        | NOT_ACCEPTABLE
        | PROXY_AUTH
        | CLIENT_TIMEOUT
        | CONFLICT
        | GONE
        | LENGTH_REQUIRED
        | PRECON_FAILED
        | ENTITY_TOO_LARGE
        | REQ_TOO_LONG
        | UNSUPPORTED_TYPE
        | REQUESTED_RANGE_NOT_SATISFIABLE
        | EXPECTATION_FAILED
        | TEAPOT
        | MISDIRECTED_REQUEST
        | UNPROCESSABLE_ENTITY
        | LOCKED
        | FAILED_DEPENDENCY
        | TOO_EARLY
        | UPGRADE_REQUIRED
        | PRECONDITION_REQUIRED
        | TOO_MANY_REQUESTS
        | REQUEST_HEADER_FIELDS_TOO_LARGE
        | UNAVAILABLE_FOR_LEGAL_REASONS
        | INTERNAL_ERROR
        | NOT_IMPLEMENTED
        | BAD_GATEWAY
        | UNAVAILABLE
        | GATEWAY_TIMEOUT
        | VERSION
        | VARIANT_ALSO_NEGOTIATES
        | INSUFFICIENT_STORAGE
        | LOOP_DETECTED
        | NOT_EXTENDED
        | NETWORK_AUTHENTICATION_REQUIRED
    }

发起请求返回的响应码。

系统能力: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

服务器无法处理请求的格式。

REQUESTED_RANGE_NOT_SATISFIABLE

416

无法满足请求中Range标头字段指定的范围。该范围可能超出了目标URI数据的大小。

EXPECTATION_FAILED

417

此响应代码表示服务器无法满足Expect请求标头字段所指示的期望。

TEAPOT

418

服务端拒绝用茶壶煮咖啡。

MISDIRECTED_REQUEST

421

请求被定向到无法生成响应的服务器。这可以由未配置为针对请求 URI 中包含的方案和权限组合生成响应的服务器发送。

UNPROCESSABLE_ENTITY

422

请求格式正确,但由于语义错误而无法遵循。

LOCKED

423

正在访问的资源已锁定。

FAILED_DEPENDENCY

424

由于前一个请求失败,请求失败。

TOO_EARLY

425

表示服务器不愿意冒险处理可能被重播的请求。

UPGRADE_REQUIRED

426

服务器拒绝使用当前协议执行请求,但在客户端升级到其他协议后可能愿意这样做。 服务端发送带有Upgrade(en-US)字段的426响应 来表明它所需的协议。

PRECONDITION_REQUIRED

428

源服务器要求请求是有条件的。此响应旨在防止'丢失更新'问题,即当第三方修改服务器上的状态时,客户端GET获取资源的状态,对其进行修改并将其PUT放回服务器,从而导致冲突。

TOO_MANY_REQUESTS

429

用户在给定的时间内发送了太多请求("限制请求速率"。)

REQUEST_HEADER_FIELDS_TOO_LARGE

431

服务器不愿意处理请求,因为其头字段太大。在减小请求头字段的大小后,可以重新提交请求

UNAVAILABLE_FOR_LEGAL_REASONS

451

用户代理请求了无法合法提供的资源,例如政府审查的网页。

INTERNAL_ERROR

500

服务器内部错误,无法完成请求。

NOT_IMPLEMENTED

501

服务器不支持请求的功能,无法完成请求。

BAD_GATEWAY

502

充当网关或代理的服务器,从远端服务器接收到了一个无效的请求。

UNAVAILABLE

503

由于超载或系统维护,服务器暂时的无法处理客户端的请求。

GATEWAY_TIMEOUT

504

充当网关或代理的服务器,未及时从远端服务器获取请求。

VERSION

505

服务器请求的HTTP协议的版本。

VARIANT_ALSO_NEGOTIATES

506

服务器存在内部配置错误:所选的变体资源被配置为参与透明内容协商本身,因此不是协商过程中的适当终点。

INSUFFICIENT_STORAGE

507

无法在资源上执行该方法,因为服务器无法存储成功完成请求所需的表示。

LOOP_DETECTED

508

服务器在处理请求时检测到无限循环。

NOT_EXTENDED

510

服务器需要对请求进行进一步扩展才能完成请求。

NETWORK_AUTHENTICATION_REQUIRED

511

指示客户端需要进行身份验证才能获得网络访问权限。

func getValue()

public func getValue(): UInt32

获取ResponseCode枚举对应的数值。

系统能力:SystemCapability.Communication.NetStack

返回值:

类型

说明

UInt32

返回ResponseCode枚举对应的数值。

示例:

import ohos.net.http.*
    
let code = ResponseCode.OK.getvalue()

func parse(code: UInt32)

public func parse(code: UInt32): ResponseCode

获取状态码对应的枚举。

系统能力:SystemCapability.Communication.NetStack

参数:

参数名

类型

必填

说明

code

UInt32

状态码的数值。

返回值:

类型

说明

UInt32

返回状态码数值对应的枚举。

示例:

import ohos.net.http.*
    
 let code = ResponseCode.parse(200)

func createHttpResponseCache(UInt32)

public func createHttpResponseCache(cacheSize!: UInt32 = `10 * 1024 * 1024`): HttpResponseCache

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

系统能力:SystemCapability.Communication.NetStack

参数:

参数名

类型

必填

说明

cacheSize

UInt32

缓存大小最大为10*1024*1024(10MB),默认最大。

返回值:

类型

说明

HttpResponseCache

返回一个存储HTTP访问请求响应的对象。

示例:

import ohos.net.http.*
    
let httpResponseCache = createHttpResponseCache()

class HttpResponseCache

public class HttpResponseCache {}

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

func flush()

public func flush(): Unit

将缓存中的数据写入文件系统,以便在下一个HTTP请求中访问所有缓存数据。

系统能力:SystemCapability.Communication.NetStack

示例:

import ohos.net.http.*
    import ohos.base.*
    
    let httpResponseCache = createHttpResponseCache()
    
    try {
        httpResponseCache.flush()
    } catch (e: BusinessException) {
        Hilog.info(0, "", "${e}")
    }

func delete()

public func delete(): Unit

禁用缓存并删除其中的数据。

系统能力:SystemCapability.Communication.NetStack

示例:

import ohos.net.http.*
    import ohos.base.*
    
    let httpResponseCache = createHttpResponseCache()
    
    try {
        httpResponseCache.delete()
    } catch (e: BusinessException) {
        Hilog.info(0, "", "${e}")
    }

class HttpResponse

public class HttpResponse <: ToString {}

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

系统能力:SystemCapability.Communication.NetStack

名称

类型

必填

说明

result

HttpData

HTTP请求根据响应头中content-type类型返回对应的响应格式内容。

resultType

HttpDataType

返回值类型。

responseCode

ResponseCode

响应的状态码

header

HashMap<String, String>

发起HTTP请求返回来的响应头。

cookies

String

服务器返回的cookies。

performanceTiming

PerformanceTiming

HTTP请求的各个阶段的耗时。

func toString()

public func toString(): String

返回字符串形式的HttpResponse。

系统能力:SystemCapability.Communication.NetStack

返回值:

类型

说明

String

返回字符串形式的HttpResponse。

示例:

import ohos.net.http.*
    
    let httpRequest = createHttp()
    httpRequest.request("http://www.example.com", {err, resp =>
        if (let Some(e) <- err) {
            Hilog.error(0, "test","exception: ${e.message}")
        }
        if (let Some(r) <- resp) {
            Hilog.info(0, "test", "resp: ${r.toString()}")
        } else {
            Hilog.error(0, "test", "response is none")
        }
    })

class ClientCert

public class ClientCert {
        public ClientCert(
            public let certPath: String,
            public let keyPath: String,
            public let certType!: CertType = CertType.PEM,
            public let keyPassword!: ?String = None
        ) {}
    }

客户端证书类型。

系统能力:SystemCapability.Communication.NetStack

名称

类型

必填

说明

certPath

String

证书路径。

keyPath

String

证书秘钥的路径。

certType

CertType

证书类型,默认是PEM。

keyPassword

?String

证书秘钥的密码。

class PerformanceTiming

  • public class PerformanceTiming <: ToString {}

性能打点数据,单位为毫秒。

系统能力:SystemCapability.Communication.NetStack

名称

类型

必填

说明

dnsTiming

Float64

从request请求到DNS解析完成耗时。

tcpTiming

Float64

从request请求到TCP连接完成耗时。

tlsTiming

Float64

从request请求到TLS连接完成耗时。

firstSendTiming

Float64

从request请求到开始发送第一个字节的耗时。

firstReceiveTiming

Float64

从request请求到接收第一个字节的耗时。

totalFinishTiming

Float64

从request请求到完成请求的耗时。

redirectTiming

Float64

从request请求到完成所有重定向步骤的耗时。

responseHeaderTiming

Float64

从request请求到header解析完成的耗时。

responseBodyTiming

Float64

从request请求到body解析完成的耗时。

totalTiming

Float64

从request请求回调到应用程序的耗时。

func toString()

public func toString(): String

返回字符串形式的PerformanceTiming。

系统能力:SystemCapability.Communication.NetStack

返回值:

类型

说明

String

返回字符串形式的PerformanceTiming。

示例:

import ohos.net.http.*
    
    let httpRequest = createHttp()
    httpRequest.request("http://www.example.com", {err, resp =>
        if (let Some(e) <- err) {
            Hilog.error(0, "test","exception: ${e.message}")
        }
        if (let Some(r) <- resp) {
            Hilog.info(0, "test", "resp: ${r.performanceTiming.toString()}")
        } else {
            Hilog.error(0, "test", "response is none")
        }
    })

class DataReceiveProgressInfo

public class DataReceiveProgressInfo {}

数据接收信息。

系统能力:SystemCapability.Communication.NetStack

名称

类型

必填

说明

receiveSize

UInt32

已接收的数据量单位为字节。

totalSize

UInt32

总共要接收的数据量单位为字节。

class DataSendProgressInfo

public class DataSendProgressInfo {}

数据发送信息。

系统能力:SystemCapability.Communication.NetStack

属性

名称

类型

必填

说明

sendSize

UInt32

每次发送的数据量单位为字节。

totalSize

UInt32

总共要发送的数据量单位为字节。

class MultiFormData

public class MultiFormData {
        public MultiFormData (
            public let name: String,
            public let contentType: String,
            public let remoteFileName!: ?String = None,
            public let data!: ?HttpData = None,
            public let filePath!: ?String = None
        ) {}
    }

多部分表单数据的类型。

系统能力:SystemCapability.Communication.NetStack

名称

类型

必填

说明

name

String

数据名称。

contentType

String

数据类型,如'text/plain','image/png', 'image/jpeg', 'audio/mpeg', 'video/mp4'等。

remoteFileName

?String

上传到服务器保存为文件的名称。

data

?HttpData

表单数据内容。

filePath

?String

此参数根据文件的内容设置mime部件的正文内容。用于代替data将文件数据设置为数据内容,如果data为空,则必须设置filePath。如果data有值,则filePath不会生效。

enum HttpDataType

public enum HttpDataType {
        STRING |
        ARRAY_BUFFER
}

HTTP的数据类型。

系统能力:SystemCapability.Communication.NetStack

名称

说明

STRING

字符串类型。

ARRAY_BUFFER

二进制数组类型。

enum HttpData

public enum HttpData <: ToString {
        STRING_DATA(String) |
        ARRAY_DATA(Array<Byte>)
    }

HTTP的数据。

系统能力:SystemCapability.Communication.NetStack

名称

说明

STRING_DATA(String)

字符串。

ARRAY_DATA(Array<Byte>)

二进制数组。

func toString()

public func toString(): String

返回字符串形式的HttpData。

系统能力:SystemCapability.Communication.NetStack

返回值:

类型

说明

String

返回字符串形式的HttpData。

示例:

import ohos.net.http.*
    import ohos.base.*
    
    let httpData = HttpData.STRING_DATA("data to send")
    AppLog.info(httpData.toString())

enum HttpProtocol

public enum HttpProtocol {
        HTTP1_1 |
        HTTP2 |
        HTTP3
    }

HTTP协议版本。

系统能力:SystemCapability.Communication.NetStack

名称

说明

HTTP1_1

协议HTTP/1.1。

HTTP2

协议HTTP/2。

HTTP3

协议HTTP/3,若系统或服务器不支持,则使用低版本的HTTP协议请求。仅对HTTPS的URL生效,HTTP则会请求失败。

enum CertType

public enum CertType {
        PEM |
        DER |
        P12
    }

证书类型的枚举。

系统能力:SystemCapability.Communication.NetStack

名称

说明

PEM

证书类型PEM。

DER

证书类型DER。

P12

证书类型P12。

enum UsingProxy

public enum UsingProxy {
        NOT_USE |
        USE_DEFAULT |
        USE_SPECIFIED(HttpProxy)
    }

使用代理的类型

系统能力:SystemCapability.Communication.NetStack


名称

说明

NOT_USE

不使用代理。

USE_DEFAULT

使用默认代理。

USE_SPECIFIED(HttpProxy)

使用指定类型代理。

如对您有帮助,帮忙点个“在看 、关注” 让更多的人受益~!

技术交流群可加wx“LB-9191”备注cangjie