uni-app Hbuildx 3.96版本 uni.request POST header设置application/json无效
uni-app Hbuildx 3.96版本 uni.request POST header设置application/json无效
| 项目信息 | 详情 |
|---|---|
| 产品分类 | uniapp/App |
| PC开发环境 | Windows |
| PC系统版本号 | win11 |
| HBuilderX类型 | 正式 |
| HBuilderX版本 | 3.96 |
| 手机系统 | Android |
| 手机系统版本 | Android 13 |
| 手机厂商 | OPPO |
| 手机机型 | oppo find x3 pro |
| 页面类型 | vue |
| vue版本 | vue2 |
| 打包方式 | 云端 |
| 项目创建方式 | HBuilderX |
操作步骤:
post协议,header无效 设置完application/json ,springBoot后台框架接收到的还是application/x-www-form-urlencoded,不兼容高版本的钉钉,请尽快修复该问题
预期结果:
后台能正确接收到,application/json
实际结果:
目前后台一直接收到的为application/x-www-form-urlencoded
bug描述:
Hbuildx 3.96版本 uni.request POST header无效 设置完application/json 不生效,后台接收到的还是application/x-www-form-urlencoded,不兼容最新版本的钉钉,我兼容的钉钉版本为7.0.56.1
更多关于uni-app Hbuildx 3.96版本 uni.request POST header设置application/json无效的实战教程也可以访问 https://www.itying.com/category-93-b0.html
在 uni-app 中使用 uni.request 进行 POST 请求时,如果设置 header 为 application/json 但无效,可能是以下几个原因导致的。以下是一些排查和解决方法:
1. 检查 header 设置是否正确
确保在 uni.request 中正确设置了 header,并且 Content-Type 为 application/json。示例代码如下:
uni.request({
url: 'https://example.com/api',
method: 'POST',
header: {
'Content-Type': 'application/json' // 确保这里正确设置
},
data: {
key1: 'value1',
key2: 'value2'
},
success: (res) => {
console.log('请求成功', res);
},
fail: (err) => {
console.log('请求失败', err);
}
});
2. 检查请求数据格式
application/json 要求请求体是 JSON 格式。确保 data 是一个对象,uni.request 会自动将其序列化为 JSON 字符串。如果 data 是字符串,需要手动将其转换为 JSON 格式。
data: JSON.stringify({
key1: 'value1',
key2: 'value2'
})
3. 检查服务器端是否支持 application/json
确保服务器端能够正确解析 application/json 格式的请求体。如果服务器端不支持,可能会导致请求失败或数据无法正确解析。
4. 检查 HBuilderX 版本
你使用的是 HBuilderX 3.96 版本,确保该版本没有已知的 Bug。可以尝试升级到最新版本,或者查看官方文档和社区是否有相关问题的解决方案。
5. 调试工具检查
使用浏览器的开发者工具或抓包工具(如 Fiddler、Charles)检查请求的 header 和 body,确认 Content-Type 是否正确设置为 application/json,以及请求体是否符合预期。
6. 尝试其他 Content-Type
如果问题仍然存在,可以尝试使用其他 Content-Type,例如 application/x-www-form-urlencoded,看看是否能够正常工作。如果可以,可能是服务器端对 application/json 的支持有问题。
header: {
'Content-Type': 'application/x-www-form-urlencoded'
}
7. 检查跨域问题
如果请求是跨域的,确保服务器端正确配置了 CORS(跨域资源共享),允许 Content-Type: application/json。
8. 使用 uni.request 的 dataType 参数
可以尝试设置 dataType 为 json,确保返回的数据是 JSON 格式。
uni.request({
url: 'https://example.com/api',
method: 'POST',
header: {
'Content-Type': 'application/json'
},
data: {
key1: 'value1',
key2: 'value2'
},
dataType: 'json', // 确保返回的数据是 JSON 格式
success: (res) => {
console.log('请求成功', res);
},
fail: (err) => {
console.log('请求失败', err);
}
});


