uni-app uni.request data传入JSON字符串,鸿蒙平台运行参数多了空格,接口报错,其他平台可以正常运行

uni-app uni.request data传入JSON字符串,鸿蒙平台运行参数多了空格,接口报错,其他平台可以正常运行

开发环境 版本号 项目创建方式
Mac mac os 11.4 HBuilderX

产品分类:uniapp/App

PC开发环境操作系统:Mac

HBuilderX类型:正式

HBuilderX版本号:4.56

手机系统:HarmonyOS NEXT

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

手机厂商:华为

手机机型:Mate^0

页面类型:vue

vue版本:vue3

打包方式:云端

项目创建方式:HBuilderX

示例代码:

【报Bug】 uni.request data传入JSON字符串,鸿蒙平台运行参数多了空格,接口报错, 其他平台可以正常运行

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.stringfy({  
        text: 'uni.request'  
    }),  
    header: {  
        'custom-header': 'hello' //自定义请求头信息  
    },  
    success: (res) => {  
        console.log(res.data);  
        this.text = 'request success';  
    }  
});

两个方法的写在在鸿蒙平台表现不一致, data传入 JSON.stringfy({
text: ‘uni.request’
}) 后台接口报错 400 。

操作步骤:

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.stringfy({  
        text: 'uni.request'  
    }),  
    header: {  
        'custom-header': 'hello' //自定义请求头信息  
    },  
    success: (res) => {  
        console.log(res.data);  
        this.text = 'request success';  
    }  
});

两个方法的写在在鸿蒙平台表现不一致, data传入 JSON.stringfy({
text: ‘uni.request’
}) 后台接口报错 400 。

预期结果:

uniapp能兼容 传入JSON字符串 或者直接传入对象,


实际结果:


两个参数传递方式 在鸿蒙平台表现不一致

更多关于uni-app uni.request data传入JSON字符串,鸿蒙平台运行参数多了空格,接口报错,其他平台可以正常运行的实战教程也可以访问 https://www.itying.com/category-93-b0.html

2 回复

我们是SDK内部封装的API, 传递的data为JSON 字符串, 在鸿蒙平台接口会报错, 其他平台正常。

更多关于uni-app uni.request data传入JSON字符串,鸿蒙平台运行参数多了空格,接口报错,其他平台可以正常运行的实战系列教程也可以访问 https://www.itying.com/category-93-b0.html


这是一个已知的鸿蒙平台兼容性问题。当直接传入JSON字符串时,鸿蒙平台会在参数中自动添加空格导致接口报错400错误。

建议解决方案:

  1. 优先使用对象形式传参(第一种方式),让uni-app内部处理序列化
  2. 如果必须使用JSON字符串,可以尝试手动去除空格:
data: JSON.stringify({text: 'uni.request'}).replace(/\s+/g, '')
回到顶部