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

React Native调用HTTP/2接口无法获取响应体问题求助

React Native fetch调用AWS Lambda HTTP/2接口无法获取响应体的解决思路

第一步:确认是否未正确解析响应体

你当前的代码只是打印了fetch返回的Response对象,这个对象本身并不直接包含响应体内容,需要调用json()、text()等方法解析后才能拿到数据。修改代码如下:

try {
  const response = await fetch(`${API_URL}/stripe_payment`, {
    method: 'POST',
    headers: {
      'x-api-key': API_KEY,
    },
  });
  // 解析JSON格式的响应体
  const responseData = await response.json();
  console.log('API响应内容:', responseData);
} catch (error) {
  console.error('请求错误:', error);
}

如果解析后能正常拿到{"errorCode": "OK", "client_secret": "zzzz"},说明问题只是未正确处理响应体,而非HTTP/2兼容性问题。


第二步:针对HTTP/2兼容性问题的解决方案

如果解析后仍无法获取响应体,再排查HTTP/2相关的问题:

  • 降级API Gateway协议版本:在AWS控制台进入你的API Gateway,找到对应API的「Settings」页面,将「Endpoint Configuration」中的协议改为HTTP/1.1,重新部署后测试请求。
  • 替换fetch为axios:axios在React Native环境中对HTTP/2的兼容性表现更稳定,安装axios后尝试以下代码:
    import axios from 'axios';
    
    try {
      const result = await axios.post(`${API_URL}/stripe_payment`, {}, {
        headers: {
          'x-api-key': API_KEY,
        },
      });
      console.log('API响应内容:', result.data);
    } catch (error) {
      console.error('请求错误:', error);
    }
    
  • 升级React Native版本:旧版本React Native(如0.60及以下)对HTTP/2的支持存在缺陷,升级到0.70+的稳定版本可以解决部分兼容性问题。
  • 明确Lambda响应的Content-Type:确保Lambda返回的响应头包含完整的Content-Type值,避免因编码问题导致解析失败。示例Lambda代码(Node.js):
    exports.handler = async (event) => {
      return {
        statusCode: 200,
        headers: {
          'Content-Type': 'application/json; charset=utf-8',
        },
        body: JSON.stringify({ errorCode: "OK", client_secret: "zzzz" }),
      };
    };
    

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.13 09:30:56