HarmonyOS NEXT - 网络请求问题(http)
HTTP(HyperText Transfer Protocal,超文本传输协议)是一种用于传输超媒体文档(如HTML)的应用层协议,它是客户端和服务器之间通信的基础;无论是获取数据、提交表单、上传文件,HTTP都扮演着重要角色。
HarmonyOS NEXT开发过程中,HTTP请求也是不可或缺的技术,用于实现客户端和服务器之间的数据交互。同时,也需要注意网络权限、数据格式、合理配置等问题,确保应用的稳定性,以及避免以上问题未设置到位而产生的HTTP请求错误。
一、http返回数据的类型
在使用@ohos.net.http模块发送HTTP请求时,可能有些人在得到响应时,获取到的结果是一串字符串,而不是JSON格式的对象;这是因为在执行http.request()请求时,未配置expectDataType,其类型分为以下几种:
| 名称 | 描述 |
|---|---|
| STRING | 返回的类型是字符串。 |
| OBJECT | 返回的类型是Object。 |
| ARRAY_BUFFER | 返回类型为ArrayBuffer。 |
以上配置,可根据项目接口需要,对其合理配置即可。
所以,在之前一篇讲述@ohos.net.http模块封装中,我们可以配置下expectDataType参数,示例代码如下图:

@ohos.net.http模块封装地址:HarmonyOS NEXT - 电商App实例二( 网络请求http)-CSDN博客。
HTTP数据请求官方地址:文档中心。
二、Content-Type配置
在HarmonyOS NEXT中使用 @ohos.net.http 或 @ohos/axios发送POST请求是,如果后台接收到的数据为空,而通过Postman发送却正常,通常是因为请求配置或数据格式的问题。比如Content-Type未正确配置,具体如下图:

如果后台期望的是application/x-www-form-urlencoded,前端在发送请求时,将请求header中Content-Type统一为application/x-www-form-urlencoded即可。如果在项目中,出现多种请求类型,可以多实例完成不同类型数据的请求操作。如下图:
import { HttpUtil } from './httpUtil'
/*** 初始化请求 实例类*/
export const httpRequestForm = new HttpUtil('http://test.shop.com', {'Content-Type': 'application/x-www-form-urlencoded'
})/*** 初始化请求 实例类*/
export const httpRequestJson = new HttpUtil('http://test.shop.com', {'Content-Type': 'application/json'
})
@ohos.net.http和@ohos/axios请求封装功能,之前已讲过,这里不细说。
地址一:HarmonyOS NEXT - 电商App实例二( 网络请求http)-CSDN博客。
地址二:HarmonyOS NEXT - 电商App实例三( 网络请求axios)_鸿蒙开发axios网络请求在预览器中没问题 在模拟器中无法发送请求 报错 couldn't r-CSDN博客。
三、数据格式不正确
如axios请求中的data的数据格式与后台期望的格式不匹配,后台可能无法正确解析。后面期望的是JSON字符串,但传递的是普通对象,或者未将对象序列化为字符串。
3.1 未序列化
这里通过axios封装实例,向后台发送登录请求。示例代码如下:
import { standardInterfaceResult } from '../types/http'
import { axiosRequestForm } from '../utils/request'/*** 登录Api函数*/
export const login = async (data) => {return await axiosRequestForm.post<standardInterfaceResult>('/login.php', data)
}
axiosUtil中未对data数据进行序列化处理,如下图:

在发送登录请求后,未得到正确响应,现在JSON解析错误。如下图:


3.2 序列化data数据
将axiosUtil中data数据序列化为字符串,如下图:

再次发送登录请求,查看控制台输出,则不会出现JSON解析错误的提示了。如下图:

四、模拟器网络代理
估计很多小伙伴在预览器中开发一切正常,但是打开设备管理器中的模拟器后,发现http请求发送不出去,并无法得到响应了。
previewer预览器:

设备管理器中的模拟器:

如下图,通过模拟器发送的请求,并未得到响应结果。


其实这个问题很好解决,在模拟器中的网络请求配置下即可。
首先,找到“网络配置”配置页,如下图:

打开“网络配置”页,此时是“无代理”状态。如下图:

将请求地址配置上去,并把端口号修改为80,点击“应用”按钮即可。

此时,再发送登录请求,则可以正常得到服务端的响应了。如下图:

http请求相关问题就讲到这,如果你有更多问题,欢迎随时沟通交流!
相关文章:
HarmonyOS NEXT - 网络请求问题(http)
HTTP(HyperText Transfer Protocal,超文本传输协议)是一种用于传输超媒体文档(如HTML)的应用层协议,它是客户端和服务器之间通信的基础;无论是获取数据、提交表单、上传文件,HTTP都扮…...
告别旧版本,功能全面升级!
小伙伴们,今天来给大家唠唠一款超经典的软件——格式工厂!相信很多人都不陌生吧?它可是早期超多人用的视频格式转换工具呢!但随着软件行业的发展,它慢慢被其他工具代替了,像万兴、小丸、AME这些新宠儿一出现…...
WSL2 Ubuntu安装GCC不同版本
WSL2 Ubuntu安装GCC不同版本 介绍安装gcc 7.1方法 1:通过源码编译安装 GCC 7.1步骤 1:安装编译依赖步骤 2:下载 GCC 7.1 源码步骤 3:配置和编译步骤 4:配置环境变量步骤 5:验证安装 方法 2:通过…...
双目视觉小记
双目视觉及其数学原理 1. 双目视觉概述 双目视觉(Stereo Vision)是一种模仿人眼视觉系统的计算机视觉技术,利用两台摄像机从不同角度拍摄同一场景,通过图像处理和三维重建来获取场景的深度信息。双目视觉广泛应用于机器人、自动…...
Obsidian Copilot:打造你的专属 AI 笔记助手
Obsidian Copilot作为一款非常受欢迎的Obsidian插件,不仅极大地提升了用户的笔记管理和信息检索效率,还通过其多样化的AI功能为用户带来了前所未有的便捷体验。本文将详细介绍Obsidian Copilot的核心特点、使用方法及个人体验分享。 核心特点 Obsidian…...
VPC4-通达oa-docker逃逸-shiro反序列化-hash传递-CrackMapExec喷射-历史ptt攻击-进程注入
由于本人是菜鸡,不会免杀,所有免杀的部分就直接跳过了 (hhh) 靶场地址: 链接: https://pan.baidu.com/s/1Fh1Zg79n1yjCPe6rrQ2apA 提取码: qiag 第一台ubuntu(docker逃逸,shiro反序列化) fscan扫到一…...
稳定运行的以Oracle数据库为数据源和目标的ETL性能变差时提高性能方法和步骤
要提高以 Oracle 为数据源和目标的ETL性能,需要综合考虑数据库性能优化、ETL工具配置、查询优化、并行处理和资源管理等多个方面。优化过程中要根据具体的ETL场景和工具来选择适合的方案,同时建议进行逐步调优,测试不同方案的效果,…...
C++类与对象——拷贝构造与运算符重载
拷贝构造函数和赋值运算符重载就是C类默认六个函数之二。 拷贝构造函数: 如果⼀个构造函数的第⼀个参数是自身类类型的引用,且任何额外的参数都有默认值,则此构造函数 也叫做拷贝构造函数,也就是说拷贝构造是⼀个特殊的构造函数…...
疗养院管理系统设计与实现(代码+数据库+LW)
摘 要 传统办法管理信息首先需要花费的时间比较多,其次数据出错率比较高,而且对错误的数据进行更改也比较困难,最后,检索数据费事费力。因此,在计算机上安装疗养院管理系统软件来发挥其高效地信息处理的作用…...
2024年12月CCF-GESP编程能力等级认证C++编程四级真题解析
四级真题的难度: 一、总体难度评价 CCF-GESP编程能力等级认证C++四级真题的难度通常被认为相对较高。它不仅要求考生具备扎实的C++编程基础,还需要考生掌握一定的算法和数据结构知识,以及良好的问题解决能力。 二、具体难度分析 理论知识考察: 单选题和判断题中,会涉…...
MySQL开发陷阱与最佳实践:第1章:MySQL开发基础概述-1.1 MySQL简介与应用场景
👉 点击关注不迷路 👉 点击关注不迷路 👉 点击关注不迷路 文章大纲 MySQL开发陷阱与最佳实践:第1章:MySQL开发基础概述-1.1 MySQL简介与应用场景1.1.1 MySQL的发展历程与市场地位1.1.2 MySQL的核心特性与技术优势1.1.2…...
使用GitHub Actions实现Git推送自动部署到服务器
将网站一键部署到服务器的方案很多,比如纯Shell脚本结合SSH、Jenkins等工具。本文将介绍如何利用GitHub Actions这一免费且轻量的CI/CD工具,实现代码推送后自动部署到云服务器。 之前一直在使用github的工作流,确实是一个比较好用的工具。 我…...
PyTorch 系列教程:探索自然语言处理应用
本文旨在介绍如何使用PyTorch进行自然语言处理(NLP)的基础知识,包括必要的库、概念以及实际代码示例。通过阅读本文,您将能够开始您的NLP之旅。 1. 理解PyTorch PyTorch是一个开源的机器学习库,基于Torch库࿰…...
3.14-1列表
列表 一.列表的介绍和定义 1 .列表 类型: <class list> 2.符号:[] 3.定义列表: 方式1:[] 通过[] 来定义 list[1,2,3,4,6] print(type(list)) #<class list> 方式2: 通过list 转换 str2"12345" print(type(str2)) #<class str> list2lis…...
什么是强哈希算法pbkdf2(Password-Based Key Derivation Function)
文章目录 什么是pbkdf2使用场景 在线工具 什么是pbkdf2 维基百科:https://zh.wikipedia.org/zh-cn/PBKDF2 PBKDF2(Password-Based Key Derivation Function 2)是一种基于密码的密钥派生函数。它的主要作用是从密码和盐(salt&…...
<meta content=“no-siteapp“ data-n-head=“ssr“ http-equiv=“Cache-Control“/>什么作用?
<meta content"no-siteapp" data-n-head"ssr" http-equiv"Cache-Control"/> 这个标签的作用是禁止某些浏览器或工具将网页转换为“应用”形式,尤其是针对一些特定的浏览器(如早期的 UC 浏览器)或移动端工…...
pyroSAR:开源的SAR数据处理与分析工具
今天为大家介绍的软件是pyroSAR:一款开源的SAR数据处理与分析工具。下面,我们将从软件的主要功能、支持的系统、软件官网等方面对其进行简单的介绍。 pyroSAR官网网址为:https://pyrosar.readthedocs.io/en/latest/。 pyroSAR是一个开源Pytho…...
Visual Studio里的调试(debugging)功能介绍
参考 1- Introduction to Debugging | Basic Visual Studio Debugging(这是一位印度博主视频,我下面做到笔记也主要参考她的视频,但不得不说口音太重了,一股咖喱味) 目录 个人对调试浅显的认识和对调试的介绍逐行调…...
图论part4|827. 最大人工岛、127. 单词接龙、463. 岛屿的周长
827. 最大人工岛 🔗:827. 最大人工岛 - 力扣(LeetCode)827. 最大人工岛 - 给你一个大小为 n x n 二进制矩阵 grid 。最多 只能将一格 0 变成 1 。返回执行此操作后,grid 中最大的岛屿面积是多少?岛屿 由一…...
Java高级-05.反射的作用、应用场景
一.反射的作用 二.案例 Student.class package com.njau.d2_reflect;public class Student {private String name;private int age;private char sex;private double height;private String hobby;public Student(String name, int age, char sex, double height, String …...
CSS中粘性定位
1.如何设置为粘性定位? 给元素设置posttion:sticky 即可实现粘性定位. 可以使用left, right ,top, bottom 四个属性调整位置,不过最常用的是top 值. 2.粘性定位的参考点在哪里? 离他最近的一个拥有"滚动机制"的祖先元素,即便这个祖先不是最近的真实可滚动祖先. 3.粘…...
CockroachDB MCP -cursor适用
CockroachDB MCP 服务器 GitHub仓库置顶 这是一个用于 Cursor 的 CockroachDB MCP 服务器,基于 Model Context Protocol (MCP) 规范实现,可以让你在 Cursor 中直接与 CockroachDB 数据库交互。 功能 连接到 CockroachDB 数据库获取数据库中的所有表获…...
cherry-studio - 多模型支持的跨平台 AI 桌面助手
GitHub:https://github.com/CherryHQ/cherry-studio 更多AI开源软件:发现分享好用的AI工具、AI开源软件、AI模型、AI变现 - 小众AI 一款支持多种大语言模型服务的跨平台桌面客户端,兼容 Windows、Linux 和 macOS 系统。它支持主流云端模型&am…...
docker composeyaml文件,什么是swap-space,内存不足硬盘来凑,--ipc=host,yaml文件、环境变量、容器报警健康检查
--swap-space 参数明确针对的是系统内存(RAM),与显存(GPU Memory)无关。以下是关键区分: 内存(RAM) vs 显存(GPU Memory) 类型内存(RAMÿ…...
Uniapp 开发 App 端上架用户隐私协议实现指南
文章目录 引言一、为什么需要用户隐私协议?二、Uniapp 中实现用户隐私协议的步骤2.1 编写隐私协议内容2.2 在 Uniapp 中集成隐私协议2.3 DCloud数据采集说明2.4 配置方式3.1 Apple App Store3.2 Google Play Store 四、常见问题与解决方案4.1 隐私协议内容不完整4.2…...
Gradio ,一个实用的大模型界面
Gradio是HuggingFace的开源项目,GitHub 28k star。能够方便地构建AI应用的网页界面。 最大的优点是简便。对于不熟悉前端的程序员,能够迅速地构建基于web的AI应用。 Hello World import gradio as gr def print_text(text):return "Hello Wor…...
LeetCode 环形链表II:为什么双指针第二次会在环的入口相遇?
快慢指针 为什么相遇后让快指针回到起点,再让快指针和慢指针都一步一步地走,它们就会在环的入口相遇? 复杂度 时间复杂度: O(n) 空间复杂度: O(1) public ListNode detectCycle(ListNode head) {ListNode slow head, fast head;ListNode …...
如何处理PHP中的编码问题
如何处理PHP中的编码问题 在PHP开发过程中,编码问题是一个常见且棘手的问题。无论是处理用户输入、数据库交互,还是与外部API通信,编码问题都可能导致数据乱码、解析错误甚至安全漏洞。本文将深入探讨PHP中的编码问题,并提供一些…...
【动手学强化学习】part8-PPO(Proximal Policy Optimization)近端策略优化算法
阐述、总结【动手学强化学习】章节内容的学习情况,复现并理解代码。 文章目录 一、算法背景1.1 算法目标1.2 存在问题1.3 解决方法 二、PPO-截断算法2.1 必要说明2.2 伪代码算法流程简述 2.3 算法代码2.4 运行结果2.5 算法流程说明 三、疑问四、总结 一、算法背景 …...
游戏引擎学习第159天
回顾与今天的计划 我们在完成一款游戏的制作。这个游戏没有使用任何引擎或新库,而是从零开始编写的完整游戏代码库,您可以自行编译它,并且它是一个完整的游戏。更特别的是,这个游戏甚至没有使用显卡,所有的渲染工作都…...
