####开源鸿蒙跨平台工程网络请求集成与数据清单列表实现(详细步骤版)

欢迎加入开源鸿蒙跨平台社区: https://openharmonycrossplatform.csdn.net

一、任务目标(以第一个任务为例题)在这里插入图片描述

为开源鸿蒙跨平台(Flutter-OH)工程集成网络请求能力,实现数据清单列表的完整构建,并在开源鸿蒙设备/模拟器上完成运行验证。


二、前置环境准备(软件的安装还有环境配置)

1. 基础开发工具安装

  1. DevEco Studio 安装
    • 下载并安装 DevEco Studio(鸿蒙官方 IDE)
    • 完成首次启动配置:接受许可协议、设置 SDK 路径、安装兼容 SDK 版本(如 API 6.0.0(22))跟着这个链接
    • https://blog.csdn.net/zl392321162/article/details/156094594
    • 阅读这个文档,跟着学习如何安装软件!!!!
  2. Java 环境配置
    • 安装 JDK(推荐 JDK 11+)
    • 配置环境变量 JAVA_HOME,确保 DevEco Studio 能识别 Java 环境
    • 跟着这个链接
    • https://blog.csdn.net/zl392321162/article/details/156153538
  3. Git 安装
    • 下载并安装 Git for Windows
    • 配置 Git 用户名与邮箱,用于后续代码拉取与版本管理
  4. Flutter-OH 环境搭建
    • 从 AtomGit 拉取 Flutter-OH 仓库:https://atomgit.com/openharmony-tpc/flutter_flutter
    • 配置 Flutter-OH 环境变量,将其路径添加到系统 PATH
    • 执行 flutter doctor 验证环境完整性
    • 配置在这里插入图片描述
      —Windows平台:https://bxming.blog.csdn.net/article/details/156203074
      ios平台:https://bxming.blog.csdn.net/article/details/156203132
      跟随教程完成环境搭配之后》》》

三、DevEco Studio 项目创建

1. 新建项目

  1. 打开 DevEco Studio,点击「新建项目」

  2. 模板选择:

    • 左侧分类选择「应用」
    • 模板选择 Empty Ability(基础空模板,默认生成 Hello World 页面)
    • 点击「下一步」
    • 在这里插入图片描述
  3. 项目配置:

    • 项目名称:自定义(如 openharmonyflutter
    • 包名:唯一标识(如 com.example.openharmonyflutter
    • 保存路径:选择本地工程目录
    • Compatible SDK:选择与模拟器匹配的版本(如 6.0.0(22)
    • 设备类型:勾选 Phone(手机设备)
    • 点击「完成」,等待工程初始化完成
      在这里插入图片描述
      在这里插入图片描述
      看到如图这样,就是创建好了一个项目文件!!!

2. 工程结构说明(结构介绍)

  • entry/src/main/ets/pages/Index.ets:默认页面入口,后续将在此实现网络请求与列表功能
  • entry/src/main/module.json5:模块配置文件,用于声明权限等
  • oh_modules:三方依赖库目录

四、鸿蒙模拟器创建与启动

1. 打开设备管理器

  • 方式1:点击 DevEco Studio 右侧边栏 设备管理器 图标(📱 形状)
  • 方式2:通过顶部菜单栏 Tools > Device Manager 打开
    在这里插入图片描述

2. 新建模拟器

  1. 点击设备管理器右下角 + 新建模拟器

  2. 选择设备类型:左侧选择「手机」分类

  3. 选择系统镜像:

    • 选择与项目 Compatible SDK 版本一致的镜像(如 HarmonyOS 6.0.0(22)
    • 若镜像未下载,点击右侧 ⬇️ 按钮完成下载
    • 在这里插入图片描述
  4. 配置虚拟设备:

    • 设备名称:自定义(如 Mate 80 Pro 1,避免与已有设备重名)
    • 屏幕配置:默认或自定义尺寸、分辨率
    • 内存/存储:默认 4GB RAM + 6GB ROM
    • 启动类型:选择「冷启动」
    • 点击「完成」
      在这里插入图片描述

3. 启动模拟器

  • 在设备管理器「我的设备」列表中,找到创建好的模拟器
  • 点击右侧 ▶️ 启动按钮
  • 等待模拟器窗口弹出,显示鸿蒙桌面即启动成功
    在这里插入图片描述
    在这里插入图片描述

在这里插入图片描述
看到如图就是成功运行了!!!

五、网络请求功能开发(以第一个任务为例题,我们下面就开始做任务,至此前置任务都全部完成)!!!!!!!!!!!!!!!!!!!

在这里插入图片描述
把第一个任务截图发给豆包!!!
在这里插入图片描述
按照步骤,把代码复制粘贴进我们的对应文件!

1. 网络权限配置

  1. 打开 entry/src/main/module.json5
  2. module 节点下添加 requestPermissions 数组,声明网络权限:
    {
      "module": {
        "name": "entry",
        "requestPermissions": [
          {
            "name": "ohos.permission.INTERNET"
          }
        ]
      }
    }
    

    作用:允许应用访问网络,否则网络请求会被系统拦截

2. 网络请求工具封装

  1. entry/src/main/ets 下新建 utils 文件夹
  2. 新建 NetworkUtils.ets 文件,封装通用 GET 请求方法:
    import http from '@ohos.net.http';
    import { BusinessError } from '@ohos.base';
    
    export class NetworkUtils {
      // 封装 GET 请求
      static async fetchData<T>(url: string): Promise<T> {
        let httpClient = http.createHttp();
        try {
          let response = await httpClient.request(url, {
            method: http.RequestMethod.GET,
            readTimeout: 10000,
            connectTimeout: 10000
          });
          if (response.responseCode === 200) {
            // 将返回结果解析为 JSON
            return JSON.parse(response.result as string) as T;
          } else {
            throw new Error(`请求失败,状态码:${response.responseCode}`);
          }
        } catch (err) {
          let e = err as BusinessError;
          console.error(`网络请求错误:${e.code}, ${e.message}`);
          throw e;
        } finally {
          // 销毁请求实例
          httpClient.destroy();
        }
      }
    }
    

3. 数据模型定义

Index.ets 中定义与接口返回数据匹配的模型:

// 模拟文章列表数据模型
interface Post {
  userId: number;
  id: number;
  title: string;
  body: string;
}

4. 页面逻辑实现

打开 Index.ets,实现网络请求、状态管理与列表渲染:

import { NetworkUtils } from '../utils/NetworkUtils';

interface Post {
  userId: number;
  id: number;
  title: string;
  body: string;
}

@Entry
@Component
struct Index {
  // 状态管理
  @State posts: Post[] = [];       // 数据列表
  @State isLoading: boolean = false; // 加载状态
  @State error: string = '';       // 错误信息

  // 页面初始化时加载数据
  aboutToAppear() {
    this.fetchPosts();
  }

  // 发起网络请求获取数据
  async fetchPosts() {
    this.isLoading = true;
    this.error = '';
    try {
      // 调用封装的网络工具类,请求示例接口
      const data = await NetworkUtils.fetchData<Post[]>(
        'https://jsonplaceholder.typicode.com/posts'
      );
      this.posts = data.slice(0, 10); // 取前10条数据
    } catch (err) {
      this.error = '数据加载失败,请稍后重试';
      console.error(`获取文章列表失败:${err}`);
    } finally {
      this.isLoading = false;
    }
  }

  build() {
    Column() {
      // 标题与状态提示
      Text('数据清单列表')
        .fontSize(24)
        .fontWeight(FontWeight.Bold)
        .margin({ bottom: 20 });

      // 加载中状态
      if (this.isLoading) {
        LoadingProgress()
          .width(50)
          .height(50)
          .margin({ top: 50 });
      }
      // 错误状态
      else if (this.error) {
        Text(this.error)
          .fontSize(18)
          .fontColor('#ff0000')
          .margin({ top: 50 });
      }
      // 数据列表展示
      else {
        List({ space: 12 }) {
          ForEach(this.posts, (item: Post) => {
            ListItem() {
              Column() {
                Text(`ID: ${item.id}`)
                  .fontSize(14)
                  .fontColor('#666666');
                Text(item.title)
                  .fontSize(18)
                  .fontWeight(FontWeight.Medium)
                  .margin({ top: 4 });
                Text(item.body)
                  .fontSize(14)
                  .fontColor('#999999')
                  .maxLines(2)
                  .textOverflow({ overflow: TextOverflow.Ellipsis })
                  .margin({ top: 8 });
              }
              .width('100%')
              .padding(16)
              .backgroundColor('#f5f5f5')
              .borderRadius(8);
            }
          }, (item: Post) => item.id.toString());
        }
        .width('100%')
        .layoutWeight(1)
        .padding({ horizontal: 16 });
      }
    }
    .width('100%')
    .height('100%')
    .padding({ top: 20 });
  }
}

可能会遇到不同的错误,把错误发给豆包,让豆包教你解决!!!!!!

六、运行验证

1. 选择运行设备

  • 在 DevEco Studio 顶部工具栏,选择已启动的模拟器(如 Mate 80 Pro 1 6.0.0(22)
    在这里插入图片描述

2. 编译并运行

  1. 点击顶部工具栏 ▶️ 运行按钮(或快捷键 Shift+F10
  2. 等待工程编译:
    • 底部「构建」面板显示编译进度
    • 若编译成功,将自动生成 HAP 安装包
  3. 应用安装与启动:
    • 自动将 HAP 包安装到模拟器
    • 模拟器中自动启动应用

3. 功能验证

  • 应用启动后,自动发起网络请求
  • 加载过程中显示 LoadingProgress
  • 加载完成后,展示数据清单列表
  • 若请求失败,显示错误提示信息
  • 最终效果:模拟器中成功展示从网络获取的文章列表,任务完成

在这里插入图片描述

###七,开始编写文章教程
在这里插入图片描述

打开csdn
在这里插入图片描述
在这里插入图片描述

在这里插入图片描述
在这里插入图片描述在这里插入图片描述

按照要求编写文章,也可以把要求发送给豆包让豆包帮你完成,要求如下:
在这里插入图片描述
最后发表文章

八、任务完成总结(自查文章分数,填表))

1》》》》复制文章链接
在这里插入图片描述
2.》》》打开自查网址
在这里插入图片描述
在这里插入图片描述
填入信息
✅ 已完成核心目标:

  1. 成功集成网络请求能力,实现数据获取
  2. 构建数据清单列表页面,支持加载/错误状态
  3. 在鸿蒙模拟器上完成运行验证,功能稳定可用

在这里插入图片描述

Logo

作为“人工智能6S店”的官方数字引擎,为AI开发者与企业提供一个覆盖软硬件全栈、一站式门户。

更多推荐