【问题标题】:Walmart Seller API "Bulk Item Setup" doesn't work沃尔玛卖家 API“批量商品设置”不起作用
【发布时间】:2021-11-27 09:09:36
【问题描述】:

我尝试使用 Walmart API v4.2 发布一些商品。我使用“批量项目设置”API 方法来创建一些提要。我使用了一些方法来做到这一点:

  • 发送带有标头“multipart/form-data”的二进制文件(在请求正文中,for-data)(Walmart API 文档中描述了这种方式)
  • 在请求正文中发送带有标头“Content-Type”的字符串化对象:“application/json”,

Walmart API 正确返回我的 feedId。 但是所有这些方法都不起作用!提要创建后,我在沃尔玛卖家中心看到了“已提交”状态。但几分钟后,此状态更改为“错误”。在错误列中,我看到“错误类型:数据错误”,描述为“数据格式错误。请检查数据文件以确保其格式正确。java.lang.NullPointerException”。

我使用我的后端 NodeJs 应用程序来执行此操作。我使用 Axios 发出请求。 我的代码示例:

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

          const formData = new FormData();
          formData.append('file', file);

          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': 'application/json',
               ...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');
        }
      }

【问题讨论】:

  • 您联系过沃尔玛的支持团队吗?他们通常能够比我们更快地确定为什么您的数据对他们来说是“格式错误”。
  • 当然!我开始与沃尔玛支持进行对话。几分钟后他们回复了我。他们说我的问题很重要,他们把我的问题发给了专门的技术团队。那是大约 3 或 4 天前。就是这样。

标签: node.js axios walmart-api


【解决方案1】:

根据您提供的信息很难确定确切的问题。您可能想要检查的几件事

  1. 如果您要附加/附加文件(正如我在代码中看到的那样),请将 Content-Type 标头用作“multipart/form-data。此外,如果您要发送,请确保文件名具有 .json 扩展名data 作为 json 字符串。如果你不使用它,它可能会默认为 xml,你会得到和你看到的一样的错误。

  2. 尝试使用 Postman 等 REST 客户端调用 API,并验证调用是否成功。

  3. 如果您确实想将数据作为 HTTP 正文(而不是文件)发送,那么 Content-Type 作为 application/json 也应该适用。这在他们的开发者门户上没有记录,但它确实有效。

【讨论】:

  • 感谢您的回答!我试图走这些路,但从来没有不工作。 1. 我发送了一个文件名以.json 结尾的文件。我将标题“multipart/form-data”与“boundary ...”一起使用(通过formData方法...formData.getHeaders())2.使用邮递员3时我遇到了同样的错误。我发现了类似的问题“Stackoverflow”网站并尝试在 Content-Type 为 application/json 的请求正文中发送数据,但我遇到了同样的错误。
  • 文件可能有问题。如果您打开文件并确保 json 格式正确。我说的原因是,有成千上万的合作伙伴与这些 API 集成而没有问题。确保在尝试编码之前使用邮递员使其工作。
  • 如果您成功执行此操作,如果您能给我发送一个提要文件的示例,我将非常感谢。感谢您的回答!
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2021-10-25
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多