You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

React Native中带参数的Fetch POST请求返回400状态码如何解决?

代码存在的核心问题
  • 请求头和body格式不匹配,这是触发400状态码的直接原因
    你在headers中声明了Content-Type: application/x-www-form-urlencoded(表单格式),但实际提交的body是经过JSON.stringify序列化的JSON字符串,两种格式完全不兼容,后端无法正常解析请求参数,直接返回400错误。
  • Promise链返回值缺失
    第一个then回调中没有返回response.json()的执行结果,会导致第二个then接收到的data为undefined,无法正常获取接口返回数据。
修正方案

将body的JSON序列化逻辑替换为符合x-www-form-urlencoded格式的序列化逻辑,同时补全Promise返回即可:

function sendRequest2() {
    // 构造标准表单格式参数
    const params = new URLSearchParams();
    params.append("code", "value1");
    params.append("client_id", "value2");
    params.append("client_secret", "value3");
    params.append("redirect_uri", "http://www.google.com");
    params.append("grant_type", "authorization_code");

    fetch(`https://sandbox-api.dexcom.com/v2/oauth2/token`, {
      method: "POST",
      headers: {
        "Content-Type": "application/x-www-form-urlencoded",
      },
      body: params, // fetch会自动适配URLSearchParams实例的格式
    })
      .then((response) => {
        return response.json(); // 补全返回值
      })
      .then((data) => {
        console.log(data);
      })
      .catch((err) => console.log("The error is: " + err));
  }

如果你的运行环境不支持URLSearchParams,也可以手动拼接编码后的表单字符串:

body: "code=value1&client_id=value2&client_secret=value3&redirect_uri=http%3A%2F%2Fwww.google.com&grant_type=authorization_code"

手动拼接时需要对参数值做URL编码,避免特殊字符导致后端解析错误。

内容的提问来源于stack exchange,提问作者Santam

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.26 23:06:03