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

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

3天内不再提示

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

jf_46214456 2024-04-01 16:31 次阅读

一、场景介绍

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

二、 接口说明

HTTP数据请求功能主要由http模块提供。

使用该功能需要申请ohos.permission.INTERNET权限。

涉及的接口如下表,具体的接口说明请参考API文档。

接口名功能描述
createHttp()创建一个http请求。
request()根据URL地址,发起HTTP网络请求。
destroy()中断请求任务。
on(type: 'headersReceive')订阅HTTP Response Header 事件。
off(type: 'headersReceive')取消订阅HTTP Response Header 事件。
once('headersReceive')8+订阅HTTP Response Header 事件,但是只触发一次。

熟悉[鸿蒙]文档

鸿蒙OS开发更多内容↓点击HarmonyOSOpenHarmony技术
鸿蒙技术文档《鸿蒙NEXT星河版开发学习文档》

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

三、request接口开发步骤

1.从@ohos.net.http.d.ts中导入http命名空间。

2.调用createHttp()方法,创建一个HttpRequest对象。

3.调用该对象的on()方法,订阅http响应头事件,此接口会比request请求先返回。可以根据业务需要订阅此消息。

4.调用该对象的request()方法,传入http请求的url地址和可选参数,发起网络请求。

5.按照实际业务需要,解析返回结果。

6.调用该对象的off()方法,取消订阅http响应头事件。

7.当该请求使用完毕时,调用destroy()方法主动销毁。

// 引入包名
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",
        },
        expectDataType: http.HttpDataType.STRING, // 可选,指定返回数据的类型
        usingCache: true, // 可选,默认为true
        priority: 1, // 可选,默认为1
        connectTimeout: 60000, // 可选,默认为60000ms
        readTimeout: 60000, // 可选,默认为60000ms
        usingProtocol: http.HttpProtocol.HTTP1_1, // 可选,协议类型默认值由系统自动指定
    }, (err, data) = > {
        if (!err) {
            // data.result为HTTP响应内容,可根据业务需要进行解析
            console.info('Result:' + JSON.stringify(data.result));
            console.info('code:' + JSON.stringify(data.responseCode));
            // data.header为HTTP响应头,可根据业务需要进行解析
            console.info('header:' + JSON.stringify(data.header));
            console.info('cookies:' + JSON.stringify(data.cookies)); // 8+
        } else {
            console.info('error:' + JSON.stringify(err));
            // 取消订阅HTTP响应头事件
            httpRequest.off('headersReceive');
            // 当该请求使用完毕时,调用destroy方法主动销毁
            httpRequest.destroy();
        }
    }
);
声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • HTTP
    +关注

    关注

    0

    文章

    513

    浏览量

    31849
  • 鸿蒙系统
    +关注

    关注

    183

    文章

    2638

    浏览量

    67070
  • HarmonyOS
    +关注

    关注

    79

    文章

    1987

    浏览量

    31117
  • OpenHarmony
    +关注

    关注

    25

    文章

    3771

    浏览量

    17059
  • 鸿蒙OS
    +关注

    关注

    0

    文章

    190

    浏览量

    4646
收藏 人收藏

    评论

    相关推荐

    服务器如何处理 HTTP 请求

    服务器处理HTTP请求的过程是一个有序且复杂的流程,通常涉及多个步骤。以下是服务器处理HTTP请求的具体步骤: 监听端口 :HTTP服务器在
    的头像 发表于 12-30 09:37 259次阅读

    如何调试 HTTP 请求和响应

    调试HTTP请求和响应是Web开发网络编程中的一个重要技能。以下是一些步骤和工具,可以帮助你调试HTTP
    的头像 发表于 12-30 09:28 623次阅读

    鸿蒙Flutter实战:14-现有Flutter 项目支持鸿蒙 II

    分别安装官方的3.22版本,以及鸿蒙社区的 3.22.0 版本 3.搭建 Flutter鸿蒙开发环境 参考文章《鸿蒙Flutter实战:0
    发表于 12-26 14:59

    鸿蒙Flutter实战:07混合开发

    # 鸿蒙Flutter实战:混合开发 鸿蒙Flutter混合开发主要有两种形式。 ## 1.基于har 将flutter module
    发表于 10-23 16:00

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

    每一个httpRequest对应一个http请求任务,不可复用
    的头像 发表于 06-18 15:42 1042次阅读
    <b class='flag-5'>鸿蒙</b><b class='flag-5'>开发网络</b><b class='flag-5'>管理</b>: @ohos.net.<b class='flag-5'>http</b>  <b class='flag-5'>数据</b><b class='flag-5'>请求</b>

    鸿蒙OS崛起,鸿蒙应用开发工程师成市场新宠

    应用的形态也在发生着翻天覆地的变化。作为全球领先的移动操作系统和智能终端制造商,华为公司自主研发的鸿蒙OS应运而生,致力于构建一个统一的分布式操作系统,为各行各业的应用开发带来全新的可能性。 一、
    发表于 04-29 17:32

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

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

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

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

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

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

    鸿蒙OS开发实战:【打造自己的搜索入口】

    包含,输入框文字输入,热门词展示,热门帖子展示。全篇主要使用到的控件是TextInput, Flex, Swiper。为了贴近实战,文字输入过程中,也增加了联想词功能。整个示例将在模拟状态下完成,不做任何网络请求
    的头像 发表于 03-29 20:17 2635次阅读
    <b class='flag-5'>鸿蒙</b><b class='flag-5'>OS</b><b class='flag-5'>开发</b><b class='flag-5'>实战</b>:【打造自己的搜索入口】

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

    一、场景介绍 应用通过HTTP发起一个数据请求,支持常见的GET、POST、OPTIONS、HEAD、PUT、DELETE、TRACE、CONNECT方法。 二、接口说明 HTTP
    发表于 03-29 17:51

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

    ;@ohos.promptAction';** **封装HTTP接口请求类,提供格式化的响应信息输出功能。 使用 DevEco Studio 3.1.1 Release 及以上版本,API 版本为 api 9 及以上
    的头像 发表于 03-27 22:32 1571次阅读
    <b class='flag-5'>鸿蒙</b><b class='flag-5'>OS</b><b class='flag-5'>开发</b>实例:【工具类封装-<b class='flag-5'>http</b><b class='flag-5'>请求</b>】

    鸿蒙OS封装【axios 网络请求】(类似Android的Okhttp3)

    HarmonyOS 封装 axios 网络请求 包含 token 类似Android Okhttp3
    的头像 发表于 03-26 21:14 2955次阅读

    鸿蒙OS实战:【module的使用】

    开发HarmonyOS应用时,默认创建的工程会有一个entry module,实际应用场景为了代码或者功能解耦,我们需要用到module来进行隔离。根据鸿蒙3.0/3.1/4.0官方指导,我们可以了解到关于module的类型,以及依赖关系,本篇文章将详细为大家介绍一下m
    的头像 发表于 03-26 18:07 1048次阅读
    <b class='flag-5'>鸿蒙</b><b class='flag-5'>OS</b><b class='flag-5'>实战</b>:【module的使用】

    鸿蒙开发实战网络请求库【axios】

    [Axios] ,是一个基于 promise 的网络请求库,可以运行 node.js 和浏览器中。本库基于[Axios]原库v1.3.4版本进行适配,使其可以运行在 OpenHarmony,并沿用其现有用法和特性。
    的头像 发表于 03-25 16:47 4173次阅读
    <b class='flag-5'>鸿蒙</b><b class='flag-5'>开发</b><b class='flag-5'>实战</b>:<b class='flag-5'>网络</b><b class='flag-5'>请求</b>库【axios】