uni-app中uni.request网络请求框架post协议的content-type不支持application/json,钉钉版本为7.0.56

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

uni-app中uni.request网络请求框架post协议的content-type不支持application/json,钉钉版本为7.0.56

操作步骤:

  • 现在不能正确接收到json格式

预期结果:

  • 后端能正常接收到appLicaiton/json

实际结果:

  • 后端能正常接收到appLicaiton/json

bug描述:

  • Android 7.0.56版本 小程序post请求头设置Content-Type 是 application/json ,但是服务端程序用的springboot一直接收到的为 application/x-www-form-urlencoded

| 开发环境           | 版本号   | 项目创建方式 |
|-------------------|---------|-------------|
| Windows            | win11    | HBuilderX    |
| HBuilderX         | 3.96    |             |
| 第三方开发者工具   | 1       |             |
| 基础库             | 1       |             |

3 回复

社区的人都消失了?


为啥没人回复?

uni-app 中使用 uni.request 进行网络请求时,默认情况下,POST 请求的 Content-Typeapplication/x-www-form-urlencoded。如果你需要将 Content-Type 设置为 application/json,可以通过手动设置请求头来实现。

以下是一个示例代码,展示如何在 uni.request 中设置 Content-Typeapplication/json

uni.request({
    url: 'https://example.com/api', // 替换为你的API地址
    method: 'POST',
    header: {
        'Content-Type': 'application/json' // 设置请求头为 application/json
    },
    data: JSON.stringify({
        key1: 'value1',
        key2: 'value2'
    }), // 将数据转换为JSON字符串
    success: (res) => {
        console.log('请求成功:', res.data);
    },
    fail: (err) => {
        console.error('请求失败:', err);
    }
});

关键点:

  1. header 配置:在 header 中设置 'Content-Type': 'application/json',确保服务器知道请求体是 JSON 格式。
  2. data 转换:使用 JSON.stringify 将 JavaScript 对象转换为 JSON 字符串。

钉钉版本 7.0.56 的注意事项:

如果你在钉钉环境中遇到问题,确保钉钉的 WebView 或容器支持 application/jsonContent-Type。如果钉钉的版本或环境有特殊限制,可能需要检查钉钉的文档或联系钉钉的技术支持。

其他解决方案:

如果钉钉环境确实不支持 application/json,你可以尝试以下方法:

  1. 使用 application/x-www-form-urlencoded:将数据转换为 URL 编码格式。
  2. 使用 multipart/form-data:如果数据中包含文件或其他复杂类型,可以使用这种格式。

例如,使用 application/x-www-form-urlencoded

uni.request({
    url: 'https://example.com/api', // 替换为你的API地址
    method: 'POST',
    header: {
        'Content-Type': 'application/x-www-form-urlencoded' // 设置请求头为 application/x-www-form-urlencoded
    },
    data: 'key1=value1&key2=value2', // 将数据转换为URL编码格式
    success: (res) => {
        console.log('请求成功:', res.data);
    },
    fail: (err) => {
        console.error('请求失败:', err);
    }
});
回到顶部
AI 助手
你好,我是IT营的 AI 助手
您可以尝试点击下方的快捷入口开启体验!