鸿蒙应用网络请求封装:从零搭建一个好用的 Http 请求层

举报
yd_216186949 发表于 2026/11/09 19:41:35 2026/11/09
【摘要】 做鸿蒙应用开发时,几乎每个页面都要和服务器打交道:登录、拉列表、提交表单。一开始我图省事,在每个页面里直接写请求,写了几个页面就发现问题很多:地址到处散落、token 每个地方手动拼、错误处理各写一套,改一个接口前缀要全文搜索。后来我把请求层抽成一个统一的工具类,体验好了很多,这篇笔记记录这套封装的思路和踩过的坑。一、先定一层薄薄的封装核心是只暴露一个 request 方法,内部做三件事:拼...

做鸿蒙应用开发时,几乎每个页面都要和服务器打交道:登录、拉列表、提交表单。一开始我图省事,在每个页面里直接写请求,写了几个页面就发现问题很多:地址到处散落、token 每个地方手动拼、错误处理各写一套,改一个接口前缀要全文搜索。后来我把请求层抽成一个统一的工具类,体验好了很多,这篇笔记记录这套封装的思路和踩过的坑。

一、先定一层薄薄的封装
核心是只暴露一个 request 方法,内部做三件事:拼完整地址、注入公共请求头、统一解析响应。业务代码只关心调哪个接口、传什么参数、拿到什么数据。响应体约定为统一结构,成功码才算业务成功,非成功直接抛错,页面层只处理成功和失败两种情况。

二、token 与 401 处理
登录成功后把 token 存进 Preferences,请求前读出来放到请求头里。容易踩的坑是 token 过期:接口返回 401 时,在封装层统一清除本地 token 并跳转登录页,而不是让每个页面各自判断。登录接口本身不应带 token,封装时要留跳过鉴权的开关,否则登录请求会带着旧 token 被后端拒绝。

三、错误处理要分层
网络错误和业务错误要分开。超时、无网络属于网络错误,提示“请检查网络后重试”;业务错误直接展示后端返回的提示,不要把原生错误堆栈弹给用户。失败的 GET 请求可以重试一次,但提交订单这类写请求千万别自动重试,否则可能重复下单。

四、联调时的两个小坑
一是明文 HTTP:开发阶段后端常是 http 地址,HarmonyOS 默认禁止明文传输,需要在配置中声明允许。二是 BaseUrl 不要写死在代码里,集中放到配置类管理,开发、测试环境切换时只改一处。

这套封装写完后,新增接口基本就是定义方法名加参数,页面代码干净了很多。网络层看起来不起眼,却是应用里复用率最高的部分,花半天把它收拾好,后面能省下很多返工。

【声明】本内容来自华为云开发者社区博主,不代表华为云及华为云开发者社区的观点和立场。转载时必须标注文章的来源(华为云社区)、文章链接、文章作者等基本信息,否则作者和本社区有权追究责任。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@huaweicloud.com
  • 点赞
  • 收藏
  • 关注作者

评论(0)

0/1000
抱歉,系统识别当前为高风险访问,暂不支持该操作

全部回复

上滑加载中

设置昵称

在此一键设置昵称,即可参与社区互动!

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。