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

Walmart Seller API v4.2 Bulk Item Setup接口调用返回Malformed data错误

问题排查与修复方案

核心错误原因

  • 上传文件时未指定合法文件名:调用formData.append('file', file)时,没有传入第三个参数指定文件名及.json后缀,沃尔玛后端需要通过后缀识别文件格式,缺少该参数会导致解析器无法正确读取内容,触发空指针异常。
  • 请求头配置冲突:手动设置了Content-Type: application/json,虽然后续formData.getHeaders()返回的multipart类型会覆盖该值,但冗余配置容易引发不可预期的解析错误。
  • 直接传JSON请求体的方案不符合接口规范:沃尔玛Bulk Item Setup接口仅支持multipart/form-data格式的文件上传,直接传JSON请求体的方式即便能拿到feedId,后端也无法正常解析内容。

修复后的代码示例

async createFeed(wdpId, wdpSecret, accessToken, feedsData) {
  try {
    const jsonString = JSON.stringify(feedsData);
    const fileBuffer = Buffer.from(jsonString);

    const formData = new FormData();
    // 新增第三个参数指定json文件名,必须带.json后缀
    formData.append('file', fileBuffer, { filename: 'wfs-item-feed.json' });

    const baseToken = WalmartService.getBaseAuthToken(wdpId, wdpSecret);
    const options = {
      params: {
        feedType: 'MP_WFS_ITEM',
      },
      headers: {
        Authorization: baseToken,
        'WM_SEC.ACCESS_TOKEN': accessToken,
        'WM_QOS.CORRELATION_ID': uuidv4(),
        'WM_SVC.NAME': 'Walmart Marketplace',
        Accept: 'application/json',
        // 删掉手动设置的Content-Type,直接用formData生成的header
        ...formData.getHeaders(),
      },      
    };

    return axios
      .post(`${process.env.WALMART_API_BASEURL}/feeds`, formData, options)
      .then((response) => {
        return response.data;
      })
      .catch((error) => {
        console.error(error.message);
        throw new BadRequestException('Walmart error, ', error.message);
      });
  } catch (error) {
    throw new BadRequestException('Can not create listing');
  }
}

额外校验建议

  • 提前校验feedsData的结构完全符合沃尔玛MP_WFS_ITEM类型的JSON Schema要求,没有缺失必填字段、字段格式错误等问题
  • 可以先把生成的JSON文件手动上传到沃尔玛卖家中心的Feed上传入口,验证文件本身没有格式错误,排除内容问题

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.01 11:06:04