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

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

[[438171]]

想了解更多内容,请访问:

51CTO和华为官方合作共建的鸿蒙技术社区

https://harmonyos.51cto.com

简介

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

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

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

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

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

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

效果演示

#星光计划2.0# HarmonyOS ArkUI之开发基础(网络请求)-鸿蒙HarmonyOS技术社区#星光计划2.0# HarmonyOS ArkUI之开发基础(网络请求)-鸿蒙HarmonyOS技术社区

开发步骤

1、声明网络请求权限

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

"reqPermissions": [ 
   { 
      "name""ohos.permission.INTERNET" 
   } 

  • 1.
  • 2.
  • 3.
  • 4.
  • 5.

2、支持http明文请求

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

"default": { 
  "network": { 
    "cleartextTraffic"true 
  } 

  • 1.
  • 2.
  • 3.
  • 4.
  • 5.

3、创建HttpRequest

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

4、发起请求

GET请求(默认为GET请求)

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

  • 1.
  • 2.
  • 3.
  • 4.
  • 5.
  • 6.
  • 7.
  • 8.
  • 9.

POST请求

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

// 请求方式:POST 
postRequest() { 
  // 每一个httpRequest对应一个http请求任务,不可复用 
  let httpRequest = http.createHttp() 
  let url = 'http://apis.juhe.cn/simpleWeather/query' 
  httpRequest.request(url, 
    { 
      // 看源码得知method的类型为:RequestMethod 
      // 但是设置 method: http.RequestMethod.POST 报错 
      // 设置成 method: http.POST 可以 
      method: http.POST, 
      extraData: { 
        'key''397c9db4cb0621ad0313123dab416668'
        'city''北京' 
      } 
    }, 
    (err, data) => { 
      // 处理数据 
    }) 

  • 1.
  • 2.
  • 3.
  • 4.
  • 5.
  • 6.
  • 7.
  • 8.
  • 9.
  • 10.
  • 11.
  • 12.
  • 13.
  • 14.
  • 15.
  • 16.
  • 17.
  • 18.
  • 19.
  • 20.

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

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


    "name":"梁迪迪"
    "age":"26"
    "sex":"男" 

  • 1.
  • 2.
  • 3.
  • 4.
  • 5.

 (2)创建相应的对象

class User { 
  name: string // 姓名 
  age: string // 年龄 
  sex: string // 性别 

  • 1.
  • 2.
  • 3.
  • 4.
  • 5.

(3)解析数据

// 请求方式:GET 
getRequest() { 
  // 每一个httpRequest对应一个http请求任务,不可复用 
  let httpRequest = http.createHttp() 
  let url = '' 
  httpRequest.request(url, (err, data) => { 
    // 处理数据 
    if (!err) { 
      if (data.responseCode == 200) { 
        // 解析数据 
        var userUser = JSON.parse(JSON.stringify(data.result)) 
      } 
    } 
  }) 

  • 1.
  • 2.
  • 3.
  • 4.
  • 5.
  • 6.
  • 7.
  • 8.
  • 9.
  • 10.
  • 11.
  • 12.
  • 13.
  • 14.
  • 15.

想了解更多内容,请访问:

51CTO和华为官方合作共建的鸿蒙技术社区

https://harmonyos.51cto.com

 

责任编辑:jianghua 来源: 鸿蒙社区
相关推荐

2022-08-25 21:46:51

网络通讯应用开发

2023-12-29 08:37:59

2022-02-28 15:44:05

鸿蒙系统鸿蒙API加载网络图片

2022-08-23 16:07:02

ArkUI鸿蒙

2022-06-30 13:56:05

Rating鸿蒙

2022-08-08 19:46:26

ArkUI鸿蒙

2011-06-02 10:28:18

2021-11-01 11:08:28

鸿蒙HarmonyOS应用

2021-11-23 10:00:55

鸿蒙HarmonyOS应用

2021-11-26 15:31:43

鸿蒙HarmonyOS应用

2022-06-27 14:12:32

css鸿蒙自定义

2011-06-27 09:47:43

2011-06-27 09:02:18

Qt UDP 网络

2011-06-02 10:28:15

网络命令Arp

2011-06-02 11:21:59

Tftp

2011-06-02 14:36:22

Runas

2011-06-02 14:36:19

Route

2011-06-02 11:34:31

Nbtstat

2011-06-02 14:36:25

Netstat

2011-06-02 10:28:21

Rsh
点赞
收藏

51CTO技术栈公众号