uni-app Hbuildx 3.96版本 uni.request POST header设置application/json无效

发布于 1周前 作者 vueper 来自 Uni-App

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


2 回复

没人回复吗


uni-app 中使用 uni.request 进行 POST 请求时,如果设置 headerapplication/json 但无效,可能是以下几个原因导致的。以下是一些排查和解决方法:


1. 检查 header 设置是否正确

确保在 uni.request 中正确设置了 header,并且 Content-Typeapplication/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)检查请求的 headerbody,确认 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.requestdataType 参数

可以尝试设置 dataTypejson,确保返回的数据是 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);
  }
});
回到顶部
AI 助手
你好,我是IT营的 AI 助手
您可以尝试点击下方的快捷入口开启体验!