0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
会员中心
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

鸿蒙OS封装【axios 网络请求】(类似Android的Okhttp3)

jf_46214456 来源:jf_46214456 作者:jf_46214456 2024-03-26 21:14 次阅读
加入交流群
微信小助手二维码

扫码添加小助手

加入工程师交流群

Okhttp.ets

/**
 * 网络请求
 */
import axios from '@ohos/axios'
import httpConstants from '../net/HttpConstants'
import errorCode from '../utils/errorCode'
import toast from '../utils/ToastUtils'
import router from '../utils/RouterUtils'
import SPUtils from '../utils/SPUtils'
import SpConstants from '../net/SpConstants'

axios.defaults.headers['Content-Type'] = 'application/json;charset=utf-8'
// 创建axios实例
const service = axios.create({
  baseURL:httpConstants.url,
  timeout:10000
})
// request拦截器
service.interceptors.request.use(async config = > {
  // 是否需要设置 token
  const access_token = await SPUtils.get(SpConstants.accessToken,"")
  if (access_token != "") {
    config.headers['Authorization'] = 'Bearer ' + access_token // 让每个请求携带自定义token 请根据实际情况自行修改
  }
  return config
}, error = > {
  console.log(error)
  Promise.reject(error)
})

// 响应拦截器
service.interceptors.response.use(res = > {
  // 未设置状态码则默认成功状态
  const code = res.data.code || 200;
  // 获取错误信息
  const msg = errorCode[code] || res.data.msg || errorCode['default']
  if (code === 401) {
    toast.show("登录状态已过期,您可以继续留在该页面,或者重新登录")
    router.goNot('pages/Login')
  } else if (code === 500) {
    toast.show(msg)
    return Promise.reject(new Error(msg))
  } else if (code !== 200) {
    toast.show(msg)
    return Promise.reject('error')
  } else {
    return res
  }
},
  error = > {
    console.log('err' + error)
    let { message } = error;
    if (message == "Network Error") {
      message = "后端接口连接异常";
    }
    else if (message.includes("timeout")) {
      message = "系统接口请求超时";
    }
    else if (message.includes("Request failed with status code")) {
      message = "系统接口" + message.substr(message.length - 3) + "异常";
    }
    toast.show(message)
    return Promise.reject(error)
  }
)

export default service

API接口调用方法

LoginAPI.ets

或+mau123789学习,是v喔

import okHttp from '../utils/Okhttp'

// 登录方法-POST方法
export function login(username, password, code, uuid) {
  const data = {
    username,
    password,
    code,
    uuid
  }
  return okHttp({
    url: '/login',
    method: 'post',
    data: data
  })
}
// 获取用户详细信息-GET方法
export function getInfo() {
  return okHttp({
    url: '/getInfo',
    method: 'get'
  })
}

Login.ets页面

import {login,getInfo} from '../api/LoginAPI'
login(this.userName,this.userPwd,this.userCode,this.uuid).then(res= >{
  SPUtils.put(SpConstants.appUser,this.userName)
  SPUtils.put(SpConstants.appPwd,this.userPwd)
  SPUtils.put(SpConstants.accessToken,res.data.token)
})

审核编辑 黄宇

声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • 鸿蒙OS
    +关注

    关注

    0

    文章

    192

    浏览量

    5308
收藏 人收藏
加入交流群
微信小助手二维码

扫码添加小助手

加入工程师交流群

    评论

    相关推荐
    热点推荐

    开源鸿蒙技术大会2025丨OS内核与视窗分论坛:筑基开源鸿蒙核心内核,共拓视窗技术边界

    开源鸿蒙技术大会2025 OS内核与视窗分论坛在湖南长沙国际会议中心圆满举行。来自西北工业大学、浙江大学、厦门大学、华为等高校和企业的学者专家齐聚一堂,围绕鸿蒙内核通信机制、智能渲染、内存缓存优化、端云协同备份及空间视窗架构等前
    的头像 发表于 11-20 17:29 474次阅读
    开源<b class='flag-5'>鸿蒙</b>技术大会2025丨<b class='flag-5'>OS</b>内核与视窗分论坛:筑基开源<b class='flag-5'>鸿蒙</b>核心内核,共拓视窗技术边界

    开源鸿蒙技术大会2025丨OS原生智能分论坛圆满举办

    开源鸿蒙技术大会2025 OS原生智能分论坛在湖南长沙国际会议中心圆满举行。来自学术界与产业界的多位专家学者齐聚一堂,围绕端侧AI、智能体(Agent)技术、大模型高效推理等前沿议题展开深度交流
    的头像 发表于 11-20 17:28 399次阅读
    开源<b class='flag-5'>鸿蒙</b>技术大会2025丨<b class='flag-5'>OS</b>原生智能分论坛圆满举办

    手持机PDA三大操作系统Android / 开源鸿蒙 / Windows对比

    本文全面解析手持机PDA主流操作系统(Android和开源鸿蒙和Windows)的技术特点、区别及适用场景,帮助企业根据自身业务需求选择合适的系统。包含多维度对比表格和实用选型建议。
    的头像 发表于 09-23 15:41 581次阅读
    手持机PDA三大操作系统<b class='flag-5'>Android</b> / 开源<b class='flag-5'>鸿蒙</b> / Windows对比

    【汇思博SEEK100开发板试用体验】在开发板鸿蒙OS搭建QT开发环境

    来访问硬件资源,例如使用鸿蒙的设备管理 API 来获取摄像头设备实例,然后在 Qt 代码中进行调用。又例如,如果要实现网络通信功能,可以使用 Qt 的网络模块,如 QTcpSocket 或
    发表于 08-24 18:34

    中软国际正式启动鸿蒙软件工场

    自2024年HarmonyOS NEXT版本起,HarmonyOS应用框架层更新为鸿蒙“单框架”,正式告别了对Android应用框架、内核的依赖。2025年,鸿蒙生态进入规模化发展期,各类鸿蒙
    的头像 发表于 06-17 15:44 805次阅读

    ArkUI-X与Android联动编译开发指南

    ArkTS产物到Android工程中。 其功能主要包括: 1.手动配置编译ArkTS源码开关 2.手动配置编译module 3.手动配置文件输出路径 编译配置说明 配置编译ArkTS脚本开关 在
    发表于 06-16 22:55

    鸿蒙5开发宝藏案例分享---Web开发优化案例分享

    \' }, }; return interceptResponse; // 返回缓存数据,WebView不再发起网络请求 } return null; // 不拦截,WebView按原流程请求 }); // 步骤
    发表于 06-12 17:20

    鸿蒙5开发宝藏案例分享---点击完成时延分析

    : 动画时长 完成时延 100ms 99ms 1000ms 1007ms 优化建议 : 默认300ms可缩减至150-200ms 高频操作区域建议≤100ms 使用硬件加速动画 ?** 案例3网络请求
    发表于 06-12 17:03

    鸿蒙5开发宝藏案例分享---应用架构实战技巧

    └── network/ # 网络请求封装 关键代码示例: 1. 公共能力层抽离网络请求 // common/network/Requ
    发表于 06-12 16:14

    鸿蒙Next实现瀑布流布局

    为了实现类似真实瀑布流不断加载新数据的效果,可以结合鸿蒙的 LazyForEach 组件,在滚动到列表底部时触发数据加载逻辑 六、网络权限 // config.json { \"module
    发表于 06-10 14:17

    鸿蒙5开发宝藏案例分享---自由流转的拖拽多屏联动

    ;gt;onScrollEnd</span>事件追加数据 ?** 案例三:网络请求封装(Retrofit风格)** 为什么要封装 :官方HttpTask写回调太反人类
    发表于 06-03 18:50

    极海APM32F407 uc/os3学习笔记之任务管理介绍

    最近了解了uc/os3这个操作系统,上篇介绍了uc/os3如何正确移植到APM32F407开发板上,根据我最近学到的一些知识,这篇文章主要介绍一下uc/os3中的一些简单的任务管理API以及如何使用。
    的头像 发表于 05-24 14:37 799次阅读
    极海APM32F407 uc/<b class='flag-5'>os3</b>学习笔记之任务管理介绍

    AIGC入门及鸿蒙入门

    。 2. 实践操作: 使用Python进行实践,通过transformers库加载预训练的文本生成模型。 学习图像生成算法,如生成对抗网络(GAN)等。 3. 工具推荐: ChatGPT:由OpenAI
    发表于 01-13 10:32

    如何调试 HTTP 请求和响应

    调试HTTP请求和响应是Web开发和网络编程中的一个重要技能。以下是一些步骤和工具,可以帮助你调试HTTP请求和响应: 1. 使用浏览器开发者工具 大多数现代浏览器都内置了开发者工具,这些工具可以
    的头像 发表于 12-30 09:28 1806次阅读

    鸿蒙Flutter实战:14-现有Flutter 项目支持鸿蒙 II

    分别安装官方的3.22版本,以及鸿蒙社区的 3.22.0 版本 3.搭建 Flutter鸿蒙开发环境 参考文章《鸿蒙Flutter实战:01-搭建开发环境》 搭建项目架构 创建目录
    发表于 12-26 14:59