华为仓颉鸿蒙HarmonyOS NEXT仓颉原生数据网络HTTP请求(ohos.net.http)

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

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

导入模块

arduino 复制代码
import ohos.net.http.*

完整示例

less 复制代码
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()

swift 复制代码
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方法。

示例:

ini 复制代码
import ohos.net.http.*
    
let httpRequest = createHttp()

class HttpRequest

kotlin 复制代码
public class HttpRequest {}

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

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

swift 复制代码
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错误码。

示例:

vbscript 复制代码
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()

swift 复制代码
public func destroy(): Unit

中断请求任务。

系统能力:SystemCapability.Communication.NetStack

示例:

scss 复制代码
import ohos.net.http.*
let httpRequest = createHttp()
httpRequest.destroy()

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

swift 复制代码
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错误码。

示例:

bash 复制代码
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)

swift 复制代码
public func onHeadersReceive(callback: (HashMap<String, String>) -> Unit): Unit

订阅HTTP Response Header事件。

系统能力:SystemCapability.Communication.NetStack

参数:

参数名 类型 必填 说明
callback (HashMap<String, String>) -> Unit 回调函数。

示例:

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

func offHeadersReceive()

swift 复制代码
public func offHeadersReceive(): Unit

取消订阅HTTP Response Header事件。

说明

清空所有订阅。

系统能力:SystemCapability.Communication.NetStack

示例:

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

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

swift 复制代码
public func onceHeadersReceive(callback: (HashMap<String, String>) -> Unit): Unit

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

系统能力:SystemCapability.Communication.NetStack

参数:

参数名 类型 必填 说明
callback (HashMap<String, String>) -> Unit 回调函数。

示例:

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

func onDataReceive((Array) -> Unit)

swift 复制代码
public func onDataReceive(callback: (Array<Byte>) -> Unit): Unit

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

说明

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

系统能力:SystemCapability.Communication.NetStack

参数:

参数名 类型 必填 说明
callback (Array) -> Unit 回调函数。

示例:

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

func offDataReceive()

swift 复制代码
public func offDataReceive(): Unit

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

说明

清空所有订阅。

系统能力:SystemCapability.Communication.NetStack

示例:

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

func onDataEnd(() -> Unit)

swift 复制代码
public func onDataEnd(callback: () -> Unit): Unit

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

说明

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

系统能力:SystemCapability.Communication.NetStack

参数:

参数名 类型 必填 说明
callback () -> Unit 回调函数。

示例:

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

func offDataEnd()

swift 复制代码
public func offDataEnd(): Unit

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

说明

清空所有订阅。

系统能力:SystemCapability.Communication.NetStack

示例:

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

func onDataReceiveProgress((DataReceiveProgressInfo) -> Unit)

swift 复制代码
public func onDataReceiveProgress(callback: (DataReceiveProgressInfo) -> Unit): Unit

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

说明

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

系统能力:SystemCapability.Communication.NetStack

参数:

参数名 类型 必填 说明
callback (DataReceiveProgressInfo) -> Unit 回调函数。返回数据接收进度信息。

示例:

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

func offDataReceiveProgress()

swift 复制代码
public func offDataReceiveProgress(): Unit

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

说明

清空所有订阅。

系统能力:SystemCapability.Communication.NetStack

示例:

dart 复制代码
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)

swift 复制代码
public func onDataSendProgress(callback: (DataSendProgressInfo) -> Unit): Unit

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

系统能力:SystemCapability.Communication.NetStack

参数:

参数名 类型 必填 说明
callback (DataSendProgressInfo) -> Unit 回调函数。返回数据发送进度信息。

示例:

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

func offDataSendProgress()

swift 复制代码
public func offDataSendProgress(): Unit

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

说明

清空所有订阅。

系统能力:SystemCapability.Communication.NetStack

示例:

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

class HttpRequestOptions

ini 复制代码
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 设置指定的DNS服务器进行DNS解析。可以设置多个DNS解析服务器,最多3个服务器。如果有3个以上,只取前3个。服务器必须是IPV4或者IPV6地址。
maxLimit UInt32 响应消息的最大字节限制,默认值为5MB,以字节为单位。最大值为10MB,以字节为单位。
multiFormDataList ?Array 当'content-Type'为'multipart/form-data'时,则上传该字段定义的数据字段表单列表。

enum RequestMethod

sql 复制代码
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()

swift 复制代码
public func getValue(): String

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

系统能力:SystemCapability.Communication.NetStack

返回值:

类型 说明
String 返回RequestMethod枚举对应的字符串。

示例:

ini 复制代码
import ohos.net.http.*
    
let getMethod = RequestMethod.GET.getvalue()

enum ResponseCode

swift 复制代码
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()

swift 复制代码
public func getValue(): UInt32

获取ResponseCode枚举对应的数值。

系统能力:SystemCapability.Communication.NetStack

返回值:

类型 说明
UInt32 返回ResponseCode枚举对应的数值。

示例:

ini 复制代码
import ohos.net.http.*
    
let code = ResponseCode.OK.getvalue()

func parse(code: UInt32)

swift 复制代码
public func parse(code: UInt32): ResponseCode

获取状态码对应的枚举。

系统能力:SystemCapability.Communication.NetStack

参数:

参数名 类型 必填 说明
code UInt32 状态码的数值。

返回值:

类型 说明
UInt32 返回状态码数值对应的枚举。

示例:

ini 复制代码
import ohos.net.http.*
    
 let code = ResponseCode.parse(200)

func createHttpResponseCache(UInt32)

swift 复制代码
public func createHttpResponseCache(cacheSize!: UInt32 = `10 * 1024 * 1024`): HttpResponseCache

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

系统能力:SystemCapability.Communication.NetStack

参数:

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

返回值:

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

示例:

ini 复制代码
import ohos.net.http.*
    
let httpResponseCache = createHttpResponseCache()

class HttpResponseCache

kotlin 复制代码
public class HttpResponseCache {}

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

func flush()

swift 复制代码
public func flush(): Unit

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

系统能力:SystemCapability.Communication.NetStack

示例:

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

func delete()

swift 复制代码
public func delete(): Unit

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

系统能力:SystemCapability.Communication.NetStack

示例:

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

class HttpResponse

ruby 复制代码
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()

swift 复制代码
public func toString(): String

返回字符串形式的HttpResponse。

系统能力:SystemCapability.Communication.NetStack

返回值:

类型 说明
String 返回字符串形式的HttpResponse。

示例:

vbscript 复制代码
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

typescript 复制代码
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()

swift 复制代码
public func toString(): String

返回字符串形式的PerformanceTiming。

系统能力:SystemCapability.Communication.NetStack

返回值:

类型 说明
String 返回字符串形式的PerformanceTiming。

示例:

vbscript 复制代码
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

kotlin 复制代码
public class DataReceiveProgressInfo {}

数据接收信息。

系统能力:SystemCapability.Communication.NetStack

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

class DataSendProgressInfo

kotlin 复制代码
public class DataSendProgressInfo {}

数据发送信息。

系统能力:SystemCapability.Communication.NetStack

属性

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

class MultiFormData

typescript 复制代码
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

vbnet 复制代码
public enum HttpDataType {
        STRING |
        ARRAY_BUFFER
}

HTTP的数据类型。

系统能力:SystemCapability.Communication.NetStack

名称 说明
STRING 字符串类型。
ARRAY_BUFFER 二进制数组类型。

enum HttpData

scss 复制代码
public enum HttpData <: ToString {
        STRING_DATA(String) |
        ARRAY_DATA(Array<Byte>)
    }

HTTP的数据。

系统能力:SystemCapability.Communication.NetStack

名称 说明
STRING_DATA(String) 字符串。
ARRAY_DATA(Array) 二进制数组。

func toString()

swift 复制代码
public func toString(): String

返回字符串形式的HttpData。

系统能力:SystemCapability.Communication.NetStack

返回值:

类型 说明
String 返回字符串形式的HttpData。

示例:

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

enum HttpProtocol

arduino 复制代码
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

arduino 复制代码
public enum CertType {
        PEM |
        DER |
        P12
    }

证书类型的枚举。

系统能力:SystemCapability.Communication.NetStack

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

enum UsingProxy

arduino 复制代码
public enum UsingProxy {
        NOT_USE |
        USE_DEFAULT |
        USE_SPECIFIED(HttpProxy)
    }

使用代理的类型

系统能力:SystemCapability.Communication.NetStack

名称 说明
NOT_USE 不使用代理。
USE_DEFAULT 使用默认代理。
USE_SPECIFIED(HttpProxy) 使用指定类型代理。

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

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

相关推荐
轻口味36 分钟前
【每日学点鸿蒙知识】私仓搭建、resources创建文件夹、hvigor如何动态设置版本、SM3摘要算法、SP存储报错等
华为·json·harmonyos
JasonYin~2 小时前
HarmonyOS NEXT 实战之元服务:静态案例效果---查看国际航班服务
华为·harmonyos
深海的鲸同学 luvi2 小时前
【HarmonyOS NEXT】hdc环境变量配置
linux·windows·harmonyos
Freerain997 小时前
鸿蒙Next ArkTS语法适配背景概述
华为·harmonyos
他的猫哎7 小时前
鸿蒙 Navigation组件下的组件获取pageStack问题
harmonyos·鸿蒙
雨汨8 小时前
鸿蒙之路的坑
华为·harmonyos
轻口味9 小时前
【每日学点鸿蒙知识】沙箱目录、图片压缩、characteristicsArray、gm-crypto 国密加解密、通知权限
pytorch·华为·harmonyos
xo1988201113 小时前
鸿蒙人脸识别
redis·华为·harmonyos
塞尔维亚大汉13 小时前
【OpenHarmony】 鸿蒙 UI开发之CircleIndicator
harmonyos·arkui