uni-app uni.request data传入JSON字符串 鸿蒙平台运行参数多了空格 接口报错 其他平台可以正常运行
uni-app uni.request data传入JSON字符串 鸿蒙平台运行参数多了空格 接口报错 其他平台可以正常运行
开发环境 | 版本号 | 项目创建方式 |
---|---|---|
Mac | 14.5 (23F79) | HBuilderX |
产品分类:uniapp/App
PC开发环境操作系统:Mac
HBuilderX类型:正式
HBuilderX版本号:4.56
手机系统:HarmonyOS NEXT
手机系统版本号:HarmonyOS NEXT Developer Beta2
手机厂商:华为
手机机型:Mate60
页面类型:vue
vue版本:vue3
打包方式:云端
项目创建方式:HBuilderX
示例代码:
uni.request({
url: 'https://www.example.com/request', //仅为示例,并非真实接口地址。
method: 'POST',
data: {
text: 'uni.request'
},
header: {
'custom-header': 'hello' //自定义请求头信息
},
success: (res) => {
console.log(res.data);
this.text = 'request success';
}
});
和
uni.request({
url: 'https://www.example.com/request', //仅为示例,并非真实接口地址。
method: 'POST',
data: JSON.stringify({
text: 'uni.request'
}),
header: {
'custom-header': 'hello' //自定义请求头信息
},
success: (res) => {
console.log(res.data);
this.text = 'request success';
}
});
两个方法的写在在鸿蒙平台表现不一致, data传入 JSON.stringify({ text: ‘uni.request’ }) 后台接口报错 400 。
---
### 操作步骤:
```javascript
uni.request({
url: 'https://www.example.com/request', //仅为示例,并非真实接口地址。
method: 'POST',
data: {
text: 'uni.request'
},
header: {
'custom-header': 'hello' //自定义请求头信息
},
success: (res) => {
console.log(res.data);
this.text = 'request success';
}
});
和
uni.request({
url: 'https://www.example.com/request', //仅为示例,并非真实接口地址。
method: 'POST',
data: JSON.stringify({
text: 'uni.request'
}),
header: {
'custom-header': 'hello' //自定义请求头信息
},
success: (res) => {
console.log(res.data);
this.text = 'request success';
}
});
两个方法的写在在鸿蒙平台表现不一致, data传入 JSON.stringify({ text: ‘uni.request’ }) 后台接口报错 400 。
---
### 预期结果:
两个方法的写在在鸿蒙平台表现一致
实际结果:
两个方法的写在在鸿蒙平台表现不一致, data传入 JSON.stringify({ text: ‘uni.request’ }) 后台接口报错 400 。
---
### bug描述:
uni.request data传入JSON字符串,鸿蒙平台运行参数多了空格,接口报错, 其他平台可以正常运行
更多关于uni-app uni.request data传入JSON字符串 鸿蒙平台运行参数多了空格 接口报错 其他平台可以正常运行的实战教程也可以访问 https://www.itying.com/category-93-b0.html
HBuilderX 4.61.2025040322-alpha 已修复。
更多关于uni-app uni.request data传入JSON字符串 鸿蒙平台运行参数多了空格 接口报错 其他平台可以正常运行的实战系列教程也可以访问 https://www.itying.com/category-93-b0.html
更新: 问题已确认存在差异,会进行处理。你可以临时规避此写法
发一个问题截图吧,多空格多在了哪里?是 json. stringfy 的结果不一样吗
截图如下
你先谁用 data: json 吧,先不使用 json.stringify 先规避
这是鸿蒙平台对JSON.stringify()处理的一个已知差异问题。在鸿蒙平台上,当使用JSON.stringify()后直接作为data参数传递时,可能会在生成的JSON字符串中额外添加空格或换行符,导致服务端无法正确解析。
解决方案:
- 直接传递对象而不是字符串(推荐方式):
uni.request({
url: 'https://www.example.com/request',
method: 'POST',
data: {text: 'uni.request'}, // 直接传对象
header: {'Content-Type': 'application/json'}
});
- 如果需要手动序列化,可以先对字符串进行处理:
const payload = JSON.stringify({text: 'uni.request'}).replace(/\s+/g, '');
uni.request({
url: 'https://www.example.com/request',
method: 'POST',
data: payload,
header: {'Content-Type': 'application/json'}
});