服务器之家:专注于VPS、云服务器配置技术及软件下载分享
分类导航

PHP教程|ASP.NET教程|Java教程|ASP教程|编程技术|正则表达式|C/C++|IOS|C#|Swift|Android|VB|R语言|JavaScript|易语言|vb.net|

服务器之家 - 编程语言 - 编程技术 - HarmonyOS ArkUI之开发基础(网络请求)

HarmonyOS ArkUI之开发基础(网络请求)

2021-12-03 22:43鸿蒙社区梁青松 编程技术

前段时间一直研究ArkUI中的声明式开发,开发了一些demo,但都是界面相关的,相对来说比较基础,也比较简单。所以研究一下其他的,现在成熟的APP都会有网络交互,所以记录一篇网络请求相关的。

HarmonyOS ArkUI之开发基础(网络请求)

简介

前段时间一直研究ArkUI中的声明式开发,开发了一些demo,但都是界面相关的,相对来说比较基础,也比较简单。所以研究一下其他的,现在成熟的APP都会有网络交互,所以记录一篇网络请求相关的。

本项目界面搭建基于ArkUI中TS扩展的声明式开发范式,关于语法和概念直接看官网官方文档地址:

基于TS扩展的声明式开发范式1、基于TS扩展的声明式开发范式2

本文介绍开发基础知识(网络请求):

数据接口:聚合免费API(天气预报)

网络请求:ArkUI自带的网络请求

效果演示

HarmonyOS ArkUI之开发基础(网络请求)HarmonyOS ArkUI之开发基础(网络请求)

开发步骤

1、声明网络请求权限

在 entry 下的 config.json 中 module 字段下配置权限

  1. "reqPermissions": [
  2. {
  3. "name": "ohos.permission.INTERNET"
  4. }
  5. ]

2、支持http明文请求

默认支持https,如果要支持http,在 entry 下的 config.json 中 deviceConfig 字段下配置

  1. "default": {
  2. "network": {
  3. "cleartextTraffic": true
  4. }
  5. }

3、创建HttpRequest

  1. // 导入模块
  2. import http from '@ohos.net.http';
  3. // 创建HttpRequest对象
  4. let httpRequest = http.createHttp();

4、发起请求

GET请求(默认为GET请求)

  1. // 请求方式:GET
  2. getRequest() {
  3. // 每一个httpRequest对应一个http请求任务,不可复用
  4. let httpRequest = http.createHttp()
  5. let url = 'http://apis.juhe.cn/simpleWeather/query?key=397c9db4cb0621ad0313123dab416668&city=北京'
  6. httpRequest.request(url, (err, data) => {
  7. // 处理数据
  8. })
  9. }

POST请求

目前发现API的BUG:看官方文档method可以设置为字符串,从源码得知method的类型为:RequestMethod,但是设置 method: http.RequestMethod.POST 请求数据报错,设置成 method: http.POST 可以

  1. // 请求方式:POST
  2. postRequest() {
  3. // 每一个httpRequest对应一个http请求任务,不可复用
  4. let httpRequest = http.createHttp()
  5. let url = 'http://apis.juhe.cn/simpleWeather/query'
  6. httpRequest.request(url,
  7. {
  8. // 看源码得知method的类型为:RequestMethod
  9. // 但是设置 method: http.RequestMethod.POST 报错
  10. // 设置成 method: http.POST 可以
  11. method: http.POST,
  12. extraData: {
  13. 'key': '397c9db4cb0621ad0313123dab416668',
  14. 'city': '北京'
  15. }
  16. },
  17. (err, data) => {
  18. // 处理数据
  19. })
  20. }

5、解析数据(简单示例)

(1)网络请求到的json字符串

  1. {
  2. "name":"梁迪迪",
  3. "age":"26",
  4. "sex":"男"
  5. }

(2)创建相应的对象

  1. class User {
  2. name: string // 姓名
  3. age: string // 年龄
  4. sex: string // 性别
  5. }

(3)解析数据

  1. // 请求方式:GET
  2. getRequest() {
  3. // 每一个httpRequest对应一个http请求任务,不可复用
  4. let httpRequest = http.createHttp()
  5. let url = ''
  6. httpRequest.request(url, (err, data) => {
  7. // 处理数据
  8. if (!err) {
  9. if (data.responseCode == 200) {
  10. // 解析数据
  11. var user: User = JSON.parse(JSON.stringify(data.result))
  12. }
  13. }
  14. })
  15. }


原文链接:https://harmonyos.51cto.com

延伸 · 阅读

精彩推荐
  • 编程技术让开发效率倍增的 VS Code 插件

    让开发效率倍增的 VS Code 插件

    今天来分享一些提升开发效率的实用 VS Code 插件!Better Comments 扩展可以帮助我们在代码中创建更人性化的注释,有不同形式和颜色的注释供我们选择。 ...

    前端充电宝7132022-04-21
  • 编程技术从Context源码实现谈React性能优化

    从Context源码实现谈React性能优化

    这篇文章主要介绍Context的实现原理,源码层面掌握React组件的render时机,从而写出高性能的React组件,源码层面了解shouldComponentUpdate、React.memo、PureComponen...

    魔术师卡颂5312020-12-20
  • 编程技术用户态 Tcpdump 如何实现抓到内核网络包的?

    用户态 Tcpdump 如何实现抓到内核网络包的?

    在网络包的发送和接收过程中,绝大部分的工作都是在内核态完成的。那么问题来了,我们常用的运行在用户态的程序 tcpdump 是那如何实现抓到内核态的包...

    开发内功修炼11612021-09-08
  • 编程技术Delphi - Indy idMessage和idSMTP实现邮件的发送

    Delphi - Indy idMessage和idSMTP实现邮件的发送

    这篇文章主要介绍了Delphi - Indy idMessage和idSMTP实现邮件的发送,本文通过实例代码给大家介绍的非常详细,具有一定的参考借鉴价值,需要的朋友可以参考下...

    JJ_JeremyWu6592020-09-22
  • 编程技术简单、好懂的Svelte实现原理

    简单、好懂的Svelte实现原理

    本文会围绕一张流程图和两个Demo讲解,正确的食用方式是用电脑打开本文,跟着流程图、Demo一边看、一边敲、一边学...

    魔术师卡颂4822021-11-10
  • 编程技术真正聪明的程序员,总有办法不加班

    真正聪明的程序员,总有办法不加班

    工作效率提升了,就可以少加班了,聪明的程序员,总会有一堆可以提升编码效率的工具?当一种工具满足不了工作需求,就去探索新的,今天纬小创就给...

    今日头条12482021-03-04
  • 编程技术AIOps,SRE工程师手中的利器

    AIOps,SRE工程师手中的利器

    AIOps开始成为一种极为重要的站点可靠性工程工具。它能够高效吸纳观察数据、参与数据以及来自第三方工具的数据,判断系统运行状态并保证其处于最佳...

    至顶网5972021-03-08
  • 编程技术2021年值得关注的React PDF 库

    2021年值得关注的React PDF 库

    今天,许多网络应用程序为其用户提供内置的PDF浏览选项。然而,选择一个并不容易,因为它们的功能远远超过显示PDF。在这篇文章中,我将评估5个React的...

    TianTianUp5232021-06-21