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

React Native调用PrestaShop API出现400错误,求排查原因

问题分析与解决办法

针对你调用PrestaShop API返回400错误的情况,以下是几个核心问题及修复方案:

1. API路径错误

PrestaShop官方API的默认路径是/api/而非/api/v1/,除非你在后台自定义配置了v1版本路由。错误的路径会直接触发服务器返回400请求错误。

修复:修改URL路径:

const url = "https://www.example.com/api/addresses?display=full";

2. 错误设置Content-Type请求头

GET请求无需发送JSON格式内容,且PrestaShop API默认返回XML数据。你设置的Content-Type: application/json会导致服务器无法正确解析请求,引发400错误。

修复:移除该请求头,或替换为对应格式:

headers: {
  Authorization: "Basic " + authorizationKey,
  // 移除Content-Type,或改为 application/xml
},

3. Base64编码验证

确认base-64库在React Native环境中能正确编码API_KEY:字符串。可以在浏览器控制台执行btoa("你的API_KEY:"),对比代码生成的authorizationKey是否一致,若编码异常可更换更可靠的base64处理库。

4. 服务可用性验证

直接在浏览器访问https://www.example.com/api/addresses?display=full,输入API密钥作为用户名、密码留空,验证是否能返回XML数据,以此确认API服务本身是否正常。


修改后的完整代码示例

import {encode} from "base-64";
import parser from "fast-xml-parser";

export async function getProductsMatching() {
  const apiKey = "PS_API_KEY";
  const authorizationKey = encode(apiKey + ":");
  const url = "https://www.example.com/api/addresses?display=full";

  fetch(url, {
    method: "GET",
    headers: {
      Authorization: "Basic " + authorizationKey,
    },
  })
    .then((response) => {
      if (!response.ok) {
        throw new Error("Erreur lors de la récupération des données");
      }
      return response.text();
    })
    .then((xmlData) => {
      const jsonData = parser.parse(xmlData);
      console.log("Parsed Data:", jsonData);
    })
    .catch((error) => {
      console.log("Erreur ici", error);
    });
}

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.10 21:29:50