鸿蒙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
我看是离线打包,普通的开发阶段是否正常?打印这个静态数据 mock 是否会丢失?打印返回值 all 的 length 对不对
更多关于鸿蒙Next环境下uni-app的uni.request返回数据中字符串数据丢失的实战系列教程也可以访问 https://www.itying.com/category-93-b0.html
回复 hx168: 你测试一下普通字符串,区分一下是不是特殊字符串有问题?系统不认?
回复 DCloud_UNI_OttoJi: 我的test对象里有很多key,就只有这个有特殊字符串的内容有问题
回复 DCloud_UNI_OttoJi: 你们自己打印上面的数据会有问题吗?
回复 DCloud_UNI_OttoJi: 我升级到最新Hbuilder 4.57 打印数据是正常的,但是如通过uni.request从后台返回就丢失
这是一个在HarmonyOS NEXT环境下uni.request处理特殊字符时出现的数据截断问题。问题可能出在以下几个环节:
-
字符串中包含大量\u0000空字符和特殊符号,鸿蒙系统可能对这些特殊字符的处理与安卓/iOS不同
-
建议检查以下解决方案:
- 尝试在请求头中添加:
header: {
'Content-Type': 'application/octet-stream'
}
- 或者将响应数据类型设置为arraybuffer:
dataType: 'arraybuffer'