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
相关产品推荐
相关产品推荐

