新版本 鸿蒙APP, uni-app uni.request 请求接口时 'Content-Type': 'application/json; charset=utf-8' 问题

新版本 鸿蒙APP, uni-app uni.request 请求接口时 ‘Content-Type’: ‘application/json; charset=utf-8’ 问题

开发环境 版本号 项目创建方式
Windows 11 HBuilderX

产品分类:uniapp/App

PC开发环境操作系统:Windows

HBuilderX类型:正式

HBuilderX版本号:4.66

手机系统:HarmonyOS NEXT

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

手机厂商:华为

手机机型:华为 mate 60

页面类型:vue

vue版本:vue3

打包方式:云端

项目创建方式:HBuilderX


示例代码:

这个问题只会出现在鸿蒙APP上,参数数组类型的值需要转后端才能拿到

var list = [{  
    name: '小明',  
    age: 18  
}];  
uni.request({  
    header: {  
        'Content-Type': 'application/json; charset=utf-8'  
    },  
    data: {  
        a: list,  
        a: [...list],  
        a: [{  
            name: '小明',  
            age: 18  
        }]  
    }  
})

操作步骤:

这个问题只会出现在鸿蒙APP上

var list = [{  
    name: '小明',  
    age: 18  
}];  
uni.request({  
    header: {  
        'Content-Type': 'application/json; charset=utf-8'  
    },  
    data: {  
        a: list,  
        a: [...list],  
        a: [{  
            name: '小明',  
            age: 18  
        }]  
    }  
})

预期结果:

data a: list 这样传参应该正常接收参数

var list = [{  
    name: '小明',  
    age: 18  
}];  
uni.request({  
    header: {  
        'Content-Type': 'application/json; charset=utf-8'  
    },  
    data: {  
        a: list,  
        a: [...list],  
        a: [{  
            name: '小明',  
            age: 18  
        }]  
    }  
})

实际结果:

data a: list 这样传参在鸿蒙设备上后端拿不到参数

var list = [{  
    name: '小明',  
    age: 18  
}];  
uni.request({  
    header: {  
        'Content-Type': 'application/json; charset=utf-8'  
    },  
    data: {  
        a: list,  
        a: [...list],  
        a: [{  
            name: '小明',  
            age: 18  
        }]  
    }  
})

更多关于新版本 鸿蒙APP, uni-app uni.request 请求接口时 'Content-Type': 'application/json; charset=utf-8' 问题的实战教程也可以访问 https://www.itying.com/category-93-b0.html

3 回复

有什么好的解决方案吗?鸿蒙next 真机系统版本(5.0.1.120 sp3)和虚拟机调试都遇到了这个问题

更多关于新版本 鸿蒙APP, uni-app uni.request 请求接口时 'Content-Type': 'application/json; charset=utf-8' 问题的实战系列教程也可以访问 https://www.itying.com/category-93-b0.html


我现在临时这样处理了 a: […list] 把数组重新转了下

这是鸿蒙系统下uni.request的一个已知兼容性问题。对于数组类型参数的传递,建议在鸿蒙APP中先使用JSON.stringify()将数组转为字符串再传递:

var list = [{  
    name: '小明',  
    age: 18  
}];

uni.request({  
    header: {  
        'Content-Type': 'application/json; charset=utf-8'  
    },  
    data: {
        a: JSON.stringify(list)  // 转为JSON字符串
    }
})
回到顶部