鸿蒙Next环境下uni-app的uni.request返回数据中字符串数据丢失

鸿蒙Next环境下uni-app的uni.request返回数据中字符串数据丢失

开发环境 版本号 项目创建方式
Mac 15.2 HBuilderX

产品分类:uniapp/App

PC开发环境操作系统:Mac

HBuilderX类型:Alpha

HBuilderX版本号:4.54

手机系统:HarmonyOS NEXT

手机系统版本号:HarmonyOS NEXT Developer Beta1

手机厂商:华为

手机机型:HUAWEI Mate 50

页面类型:vue

vue版本:vue3

打包方式:离线

项目创建方式:HBuilderX

示例代码:

后台返回数据格式如下:

{“test”:{“all”:“测试内容\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000|abckacaddda/qcALhWoAFz3pgAUnqcAz8SqFfPgjE9aB3oDfgBaN+sBjrZVAUQAAAAAAAAAAAAAAAAAAABSCwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAWjfrAQAAAACOtlUBAAAAAAAAAAAAAAASAAAAAAAAAgogmwAAAGVi1QprYtUKzDIAAA==|GBoAAAYAAABDAAAAwQAAACA=|| |AAAAAA==|AAAAAAAAAADV7pEQ82ryDQ==|AAAAAAAAAAAAAAAA|xxx000000000000000001000000002510000x0000000000|AwcAAMyAlQA=|ZAAAAA==|AAAAAAAAAAAAAAAAAAAAAAAAAAA=|0||AAAAAAAAAAAAAAAAAAAAAAAAAAA=”}


操作步骤:

uni.request 请求示例数据,在success中打印返回数据

预期结果:

{“test”:{“all”:“测试内容\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000|abckacaddda/qcALhWoAFz3pgAUnqcAz8SqFfPgjE9aB3oDfgBaN+sBjrZVAUQAAAAAAAAAAAAAAAAAAABSCwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAWjfrAQAAAACOtlUBAAAAAAAAAAAAAAASAAAAAAAAAgogmwAAAGVi1QprYtUKzDIAAA==|GBoAAAYAAABDAAAAwQAAACA=|| |AAAAAA==|AAAAAAAAAADV7pEQ82ryDQ==|AAAAAAAAAAAAAAAA|xxx000000000000000001000000002510000x0000000000|AwcAAMyAlQA=|ZAAAAA==|AAAAAAAAAAAAAAAAAAAAAAAAAAA=|0||AAAAAAAAAAAAAAAAAAAAAAAAAAA=”}


实际结果:

{"test":{"all":"测试内容"}}

bug描述:

网络请求uni.request返回数据success中某些情况下存在字符串数据丢失的情况。 业务场景:后台返回的加密数据,前端获取后需要对其解码并使用,测试发现本示例中的数据,在鸿蒙next系统中获取后数据存在丢失,安卓和ios正常。


更多关于鸿蒙Next环境下uni-app的uni.request返回数据中字符串数据丢失的实战教程也可以访问 https://www.itying.com/category-93-b0.html

7 回复

我看是离线打包,普通的开发阶段是否正常?打印这个静态数据 mock 是否会丢失?打印返回值 all 的 length 对不对

更多关于鸿蒙Next环境下uni-app的uni.request返回数据中字符串数据丢失的实战系列教程也可以访问 https://www.itying.com/category-93-b0.html


现在就是开发阶段,直接 data=数据, 打印data.test.all 输出的内容看起来丢失了,但all.length正常

回复 hx168: 你测试一下普通字符串,区分一下是不是特殊字符串有问题?系统不认?

回复 DCloud_UNI_OttoJi: 我的test对象里有很多key,就只有这个有特殊字符串的内容有问题

回复 DCloud_UNI_OttoJi: 你们自己打印上面的数据会有问题吗?

回复 DCloud_UNI_OttoJi: 我升级到最新Hbuilder 4.57 打印数据是正常的,但是如通过uni.request从后台返回就丢失

这是一个在HarmonyOS NEXT环境下uni.request处理特殊字符时出现的数据截断问题。问题可能出在以下几个环节:

  1. 字符串中包含大量\u0000空字符和特殊符号,鸿蒙系统可能对这些特殊字符的处理与安卓/iOS不同

  2. 建议检查以下解决方案:

  • 尝试在请求头中添加:
header: {
  'Content-Type': 'application/octet-stream'
}
  • 或者将响应数据类型设置为arraybuffer:
dataType: 'arraybuffer'
回到顶部