0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
会员中心
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

鸿蒙开发网络管理: @ohos.net.http 数据请求

jf_46214456 来源:jf_46214456 作者:jf_46214456 2024-06-18 15:42 次阅读

数据请求

说明:
开发前请熟悉鸿蒙开发指导文档 :[gitee.com/li-shizhen-skin/harmony-os/blob/master/README.md]
本模块首批接口从API version 6开始支持。后续版本的新增接口,采用上角标单独标记接口的起始版本。

导入模块

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

完整示例

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

// 每一个httpRequest对应一个http请求任务,不可复用
let httpRequest = http.createHttp();
// 用于订阅http响应头,此接口会比request请求先返回。可以根据业务需要订阅此消息
// 从API 8开始,使用on('headersReceive', Callback)替代on('headerReceive', AsyncCallback)。 8+
httpRequest.on('headersReceive', (header) = > {
    console.info('header: ' + JSON.stringify(header));
});
httpRequest.request(
    // 填写http请求的url地址,可以带参数也可以不带参数。URL地址需要开发者自定义。请求的参数可以在extraData中指定
    "EXAMPLE_URL",
    {
        method: http.RequestMethod.POST, // 可选,默认为http.RequestMethod.GET
        // 开发者根据自身业务需要添加header字段
        header: {
            'Content-Type': 'application/json'
        },
        // 当使用POST请求时此字段用于传递内容
        extraData: {
            "data": "data to send",
        },
        connectTimeout: 60000, // 可选,默认为60s
        readTimeout: 60000, // 可选,默认为60s
    }, (err, data) = > {
        if (!err) {
            // data.result为http响应内容,可根据业务需要进行解析
            console.info('Result:' + data.result);
            console.info('code:' + data.responseCode);
            // data.header为http响应头,可根据业务需要进行解析
            console.info('header:' + JSON.stringify(data.header));
            console.info('cookies:' + data.cookies); // 8+
        } else {
            console.info('error:' + JSON.stringify(err));
            // 当该请求使用完毕时,调用destroy方法主动销毁。
            httpRequest.destroy();
        }
    }
);

http.createHttp

createHttp(): HttpRequest

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

系统能力 :SystemCapability.Communication.NetStack

返回值:

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

示例:

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

HttpRequest

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

request

request(url: string, callback: AsyncCallback):void

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

需要权限 :ohos.permission.INTERNET

系统能力 :SystemCapability.Communication.NetStack

参数:

参数名类型必填说明
urlstring发起网络请求的URL地址。
callbackAsyncCallback<[HttpResponse]>回调函数。

示例:

httpRequest.request("EXAMPLE_URL", (err, data) = > {
    if (!err) {
        console.info('Result:' + data.result);
        console.info('code:' + data.responseCode);
        console.info('header:' + JSON.stringify(data.header));
        console.info('cookies:' + data.cookies); // 8+
    } else {
        console.info('error:' + JSON.stringify(err));
    }
});

request

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

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

需要权限 :ohos.permission.INTERNET

系统能力 :SystemCapability.Communication.NetStack

参数:

参数名类型必填说明
urlstring发起网络请求的URL地址。
optionsHttpRequestOptions参考[HttpRequestOptions]。
callbackAsyncCallback<[HttpResponse]>回调函数。

示例:

httpRequest.request("EXAMPLE_URL",
{
    method: http.RequestMethod.GET,
    header: {
        'Content-Type': 'application/json'
    },
    readTimeout: 60000,
    connectTimeout: 60000
}, (err, data) = > {
    if (!err) {
        console.info('Result:' + data.result);
        console.info('code:' + data.responseCode);
        console.info('header:' + JSON.stringify(data.header));
        console.info('cookies:' + data.cookies); // 8+
        console.info('header.Content-Type:' + data.header['Content-Type']);
        console.info('header.Status-Line:' + data.header['Status-Line']);
    } else {
        console.info('error:' + JSON.stringify(err));
    }
});

request

request(url: string, options? : HttpRequestOptions): Promise

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

需要权限 :ohos.permission.INTERNET

系统能力 :SystemCapability.Communication.NetStack

参数:

参数名类型必填说明
urlstring发起网络请求的URL地址。
optionsHttpRequestOptions参考[HttpRequestOptions]。

返回值:

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

示例:

let promise = httpRequest.request("EXAMPLE_URL", {
    method: http.RequestMethod.GET,
    connectTimeout: 60000,
    readTimeout: 60000,
    header: {
        'Content-Type': 'application/json'
    }
});
promise.then((data) = > {
    console.info('Result:' + data.result);
    console.info('code:' + data.responseCode);
    console.info('header:' + JSON.stringify(data.header));
    console.info('cookies:' + data.cookies); // 8+
    console.info('header.Content-Type:' + data.header['Content-Type']);
    console.info('header.Status-Line:' + data.header['Status-Line']);
}).catch((err) = > {
    console.info('error:' + JSON.stringify(err));
});

destroy

destroy(): void

中断请求任务。

系统能力 :SystemCapability.Communication.NetStack

示例:

httpRequest.destroy();

on('headerReceive')

on(type: 'headerReceive', callback: AsyncCallback ): void

订阅HTTP Response Header 事件。

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

系统能力 :SystemCapability.Communication.NetStack

参数:

参数名类型必填说明
typestring订阅的事件类型,'headerReceive'。
callbackAsyncCallback回调函数。

示例:

httpRequest.on('headerReceive', (err, data) = > {
    if (!err) {
        console.info('header: ' + JSON.stringify(data));
    } else {
        console.info('error:' + JSON.stringify(err));
    }
});

off('headerReceive')

off(type: 'headerReceive', callback?: AsyncCallback ): void

取消订阅HTTP Response Header 事件。

说明:

  1. 此接口已废弃,建议使用[off('headersReceive')8+]替代。
  2. 可以指定传入on中的callback取消一个订阅,也可以不指定callback清空所有订阅。

系统能力 :SystemCapability.Communication.NetStack

参数:

参数名类型必填说明
typestring取消订阅的事件类型,'headerReceive'。
callbackAsyncCallback回调函数。

示例:

httpRequest.off('headerReceive');

on('headersReceive')8+

on(type: 'headersReceive', callback: Callback ): void

订阅HTTP Response Header 事件。

系统能力 :SystemCapability.Communication.NetStack

参数:

参数名类型必填说明
typestring订阅的事件类型:'headersReceive'。
callbackCallback回调函数。

示例:

httpRequest.on('headersReceive', (header) = > {
    console.info('header: ' + JSON.stringify(header));
});

off('headersReceive')8+

off(type: 'headersReceive', callback?: Callback ): void

取消订阅HTTP Response Header 事件。

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

系统能力 :SystemCapability.Communication.NetStack

参数:

参数名类型必填说明
typestring取消订阅的事件类型:'headersReceive'。
callbackCallback回调函数。

示例:

httpRequest.off('headersReceive');

once('headersReceive')8+

once(type: 'headersReceive', callback: Callback ): void

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

系统能力 :SystemCapability.Communication.NetStack

参数:

参数名类型必填说明
typestring订阅的事件类型:'headersReceive'。
callbackCallback回调函数。

示例:

httpRequest.once('headersReceive', (header) = > {
    console.info('header: ' + JSON.stringify(header));
});

HttpRequestOptions

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

系统能力 :以下各项对应的系统能力均为SystemCapability.Communication.NetStack。

参数名类型必填说明
method[RequestMethod]请求方式。
extraDatastringObjectArrayBuffer8+
headerObjectHTTP请求头字段。默认{'Content-Type': 'application/json'}。
readTimeoutnumber读取超时时间。单位为毫秒(ms),默认为60000ms。
connectTimeoutnumber连接超时时间。单位为毫秒(ms),默认为60000ms。

RequestMethod

HTTP 请求方法。

系统能力 :以下各项对应的系统能力均为SystemCapability.Communication.NetStack。

名称说明
OPTIONSOPTIONSHTTP 请求 OPTIONS。
GETGETHTTP 请求 GET。
HEADHEADHTTP 请求 HEAD。
POSTPOSTHTTP 请求 POST。
PUTPUTHTTP 请求 PUT。
DELETEDELETEHTTP 请求 DELETE。
TRACETRACEHTTP 请求 TRACE。
CONNECTCONNECTHTTP 请求 CONNECT。

ResponseCode

发起请求返回的响应码。

系统能力 :以下各项对应的系统能力均为SystemCapability.Communication.NetStack。

名称说明
OK200请求成功。一般用于GET与POST请求。
CREATED201已创建。成功请求并创建了新的资源。
ACCEPTED202已接受。已经接受请求,但未处理完成。
NOT_AUTHORITATIVE203非授权信息。请求成功。
NO_CONTENT204无内容。服务器成功处理,但未返回内容。
RESET205重置内容。
PARTIAL206部分内容。服务器成功处理了部分GET请求。
MULT_CHOICE300多种选择。
MOVED_PERM301永久移动。请求的资源已被永久的移动到新URI,返回信息会包括新的URI,浏览器会自动定向到新URI。
MOVED_TEMP302临时移动。
SEE_OTHER303查看其它地址。
NOT_MODIFIED304未修改。
USE_PROXY305使用代理。
BAD_REQUEST400客户端请求的语法错误,服务器无法理解。
UNAUTHORIZED401请求要求用户的身份认证
PAYMENT_REQUIRED402保留,将来使用。
FORBIDDEN403服务器理解请求客户端的请求,但是拒绝执行此请求。
NOT_FOUND404服务器无法根据客户端的请求找到资源(网页)。
BAD_METHOD405客户端请求中的方法被禁止。
NOT_ACCEPTABLE406服务器无法根据客户端请求的内容特性完成请求。
PROXY_AUTH407请求要求代理的身份认证。
CLIENT_TIMEOUT408请求时间过长,超时。
CONFLICT409服务器完成客户端的PUT请求是可能返回此代码,服务器处理请求时发生了冲突。
GONE410客户端请求的资源已经不存在。
LENGTH_REQUIRED411服务器无法处理客户端发送的不带Content-Length的请求信息。
PRECON_FAILED412客户端请求信息的先决条件错误。
ENTITY_TOO_LARGE413由于请求的实体过大,服务器无法处理,因此拒绝请求。
REQ_TOO_LONG414请求的URI过长(URI通常为网址),服务器无法处理。
UNSUPPORTED_TYPE415服务器无法处理请求的格式。
INTERNAL_ERROR500服务器内部错误,无法完成请求。
NOT_IMPLEMENTED501服务器不支持请求的功能,无法完成请求。
BAD_GATEWAY502充当网关或代理的服务器,从远端服务器接收到了一个无效的请求。
UNAVAILABLE503由于超载或系统维护,服务器暂时的无法处理客户端的请求。
GATEWAY_TIMEOUT504充当网关或代理的服务器,未及时从远端服务器获取请求。
VERSION505服务器请求的HTTP协议的版本。HarmonyOSOpenHarmony鸿蒙文档籽料:mau123789是v直接拿

搜狗高速浏览器截图20240326151450.png

HttpResponse

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

系统能力 :以下各项对应的系统能力均为SystemCapability.Communication.NetStack。

参数名类型必填说明
resultstringObjectArrayBuffer8+
responseCode[ResponseCode]number
headerObject发起http请求返回来的响应头。当前返回的是JSON格式字符串,如需具体字段内容,需开发者自行解析。常见字段及解析方式如下: - Content-Type:header['Content-Type']; - Status-Line:header['Status-Line']; - Date:header.Date/header['Date']; - Server:header.Server/header['Server'];
cookies8+Array服务器返回的 cookies。

审核编辑 黄宇

声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • 鸿蒙
    +关注

    关注

    57

    文章

    2339

    浏览量

    42818
收藏 人收藏

    评论

    相关推荐

    鸿蒙OS开发实例:【工具类封装-http请求

    **import http from '@ohos.net.http'; import promptAction from &apos
    的头像 发表于 03-27 22:32 1356次阅读
    <b class='flag-5'>鸿蒙</b>OS<b class='flag-5'>开发</b>实例:【工具类封装-<b class='flag-5'>http</b><b class='flag-5'>请求</b>】

    鸿蒙原生应用开发-网络管理HTTP数据请求

    ()方法,取消订阅http响应头事件。 7.当该请求使用完毕时,调用destroy()方法主动销毁。 // 引入包名 import http from \'@ohos.net.http
    发表于 03-29 17:51

    鸿蒙原生应用开发-网络管理模块总述

    一、网络管理模块主要提供以下功能: HTTP数据请求:通过HTTP发起一个
    发表于 04-08 09:45

    【HarmonyOS】网络请求

    ://的,切记域名是不带http://的,重要的事说三遍。Java原生访问网络由于鸿蒙系统支持Java开发,所以我们可以直接使用Java原生的Api来进行
    发表于 10-14 11:45

    http request请求不到接口数据是为什么?

    import http from '@ohos.net.http';export function doList() { const url const httpRequest
    发表于 04-25 10:15

    鸿蒙应用开发请求不到数据是为什么?

    鸿蒙应用开发请求不到数据
    发表于 06-15 11:04

    【学习打卡】OpenHarmony工具集之数据请求封装·让获取数据变简单

    介绍开发OpenHarmony应用程序时进行数据请求,使用@ohos.net.http模块,每次都需要创建一个http
    发表于 07-26 15:04

    HarmonyOS应用API- HTTP数据请求

    import http from '@ohos.net.http';进行数据请求// 每一个httpRequest对应一个http
    发表于 10-11 15:47

    【中秋国庆不断更】HarmonyOS网络管理开发HTTP与WebSocket

    一、网络管理开发概述 网络管理模块主要提供以下功能: ● ​​HTTP
    发表于 09-27 15:40

    http请求 get post

    Http请求类 packagewzh.Http; importjava.io.BufferedReader; importjava.io.IOException
    发表于 09-27 10:36 16次下载

    OpenHarmony上使用的Http网络框架教程

    简介 鸿蒙上使用的Http网络框架,里面包含纯Java实现的HttpNet,类似okhttp使用,支持同步和异步两种请求方式;还有鸿蒙版re
    发表于 04-12 11:13 4次下载

    如何使用 ESP-AT实现HTTP请求

    ESP-AT作为乐鑫开发的可直接用于量产的物联网应用固件,可以简单完成网络的连接,以及设备与服务器之间的数据传输。本文将介绍如何使用 ESP-AT实现HTTP
    的头像 发表于 05-23 17:12 1245次阅读
    如何使用 ESP-AT实现<b class='flag-5'>HTTP</b><b class='flag-5'>请求</b>

    鸿蒙OS开发实例:【窥探网络请求

    HarmonyOS 平台中使用网络请求,需要引入 "@ohos.net.http", 并且需要在 module.json5 文件中申请网络权限, 即 “
    的头像 发表于 04-01 16:11 766次阅读
    <b class='flag-5'>鸿蒙</b>OS<b class='flag-5'>开发</b>实例:【窥探<b class='flag-5'>网络</b><b class='flag-5'>请求</b>】

    鸿蒙OS开发实战:【网络管理HTTP数据请求

    应用通过HTTP发起一个数据请求,支持常见的GET、POST、OPTIONS、HEAD、PUT、DELETE、TRACE、CONNECT方法。
    的头像 发表于 04-01 16:31 693次阅读
    <b class='flag-5'>鸿蒙</b>OS<b class='flag-5'>开发</b>实战:【<b class='flag-5'>网络</b><b class='flag-5'>管理</b><b class='flag-5'>HTTP</b><b class='flag-5'>数据</b><b class='flag-5'>请求</b>】

    鸿蒙OS开发实例:【HarmonyHttpClient】网络框架

    鸿蒙上使用的Http网络框架,里面包含纯Java实现的HttpNet,类似okhttp使用,支持同步和异步两种请求方式;还有鸿蒙版retro
    的头像 发表于 04-12 16:58 827次阅读
    <b class='flag-5'>鸿蒙</b>OS<b class='flag-5'>开发</b>实例:【HarmonyHttpClient】<b class='flag-5'>网络</b>框架