【鸿蒙学习笔记】使用axios进行HTTP数据请求

官方文档:网络管理开发概述

目录标题

访问淘宝公开接口(测试数据)

http://rap2api.taobao.org/app/mock/293606/api/chat/list

第1步:module.json5 配置网络授权

cpp 复制代码
"requestPermissions": [{
  // 网络授权
  "name":'ohos.permission.INTERNET'
}]

第2步:下载axios

Alt+F12 → 执行 ohpm install @ohos/axios


第3步:源码

cpp 复制代码
//1. 下载axios: Alt+F12 → 执行 ohpm install @ohos/axios
//2. 导入axios
import axios, { AxiosError, AxiosResponse } from '@ohos/axios'

class DataInfo {
  list: Array<DataItem> = new Array()
  // list: Array<DataItem> = []
}

class DataItem {
  originName: string = ''
  messageIconUrl: string = ''
  describe: string = ''
  remarkName: string = ''
  messageText: string = ''
}

// 淘宝公开接口,返回的数据读不懂(测试数据)
let url = 'http://rap2api.taobao.org/app/mock/293606/api/chat/list';

@Entry
@Component
struct Page_axios {
  @State mockDataList: Array<DataItem> = []
  url = 'http://rap2api.taobao.org/app/mock/293606/api/chat/list';

  build() {
    Row() {
      Column() {
        Button('get axiosData').margin(20)
          .onClick(() => {
            this.getAxiosData()
          })
        ForEach(this.mockDataList, (item: DataItem) => {
          Text(item.originName).fontColor(Color.Red)
        })

        Button('使用Axios获取网络数据').margin(20)
          .onClick(() => {
            this.axiosGetHttpData();
          })
        ForEach(this.mockDataList, (item: DataItem) => {
          Text(item.originName).fontColor(Color.Blue)
        })
      }.width('100%')
    }.height('100%')
  }

  getAxiosData() {
    //3. axios发起请求
    axios.get(this.url)
      .then((res: AxiosResponse) => {
        //4. axios获取结果
        // res.data
        AlertDialog.show({ message: JSON.stringify(res.data) })
        this.mockDataList = res.data.list
      })
  }

  axiosGetHttpData() {
    axios.get<DataInfo, AxiosResponse<DataInfo>, null>(url)
      .then((resp: AxiosResponse<DataInfo>) => { // 获取数据成功
        if (resp.status === 200) { // 获取正确网络数据
          AlertDialog.show({ message: JSON.stringify(resp.data.list) })
          this.mockDataList = resp.data.list
        } else {
          AlertDialog.show({ message: '获取失败' })
        }
      })
      .catch((err: AxiosError) => { // 网络异常或者接口异常回调
        AlertDialog.show({ message: '获取失败' })
      })
  }
}

第4步:启动模拟器

第5步:启动entry

第6步:操作

相关推荐
by209999 小时前
学会使用std::string类,并理解其内部是如何管理字符串的详细阐述(上)
c++·笔记·字符串·类和对象·string
青柠之夏cc9 小时前
AI与教育:个性化学习助手让“因材施教“成为现实,但代价是隐私?
人工智能·学习
笑鸿的学习笔记10 小时前
C++笔记之大块顺序写
java·c++·笔记
for_ever_love__10 小时前
机器学习入门——手写线性回归与梯度下降
人工智能·python·学习·机器学习·线性回归
在猴站学算法10 小时前
(SQL注入学习)无回显的报错注入(Error-Based)
学习·网络安全·sql注入·ctf竞赛
resh_people12 小时前
开源鸿蒙平台 KMP_CMP 三方库「Kermit」适配全流程
华为·开源·harmonyos
山岚的运维笔记12 小时前
ComfyUI NVIDIA安装教程:官方便携版下载+run_nvidia_gpu.bat启动,8G显存Windows实操
运维·服务器·windows·笔记·prompt·aigc·comfyui
知识分享小能手12 小时前
C++ 学习教程,从入门到精通,C++ 友元、异常和其他特性 — 详细知识点(15)
开发语言·c++·学习
fanged13 小时前
Camera学习2(V4L2和Media Controller)(TODO)
学习
李游Leo13 小时前
HarmonyOS 7 EasyGo + ArkUI Navigation:平行视界主副页筛选事务与跨栏撤销一致性【鸿蒙心迹】
华为·harmonyos