Perl:连接到沃尔玛 API 以加载项目不支持的媒体类型错误

Perl: Connecting to Walmart API to load items Unsupported Media type error

我们正在尝试使用 marketplace.walmartapis.com api 批量列出项目,它返回 xml 项目供稿

不支持的媒体类型

我们正在使用 Perl,并且能够执行其他命令来更新库存和定价、检查订单、查找 feed 和 skus 等。令牌应该是好的,因为我们 运行 两次调用背靠背使用在尝试发送 xml 文件之前,同样的标记和第一次调用(物品清单)按预期工作。只有当我们尝试发送 xml 批处理文件时,我们才 运行 进入问题。

我们假设问题出在 header/authentication 上,并尝试了许多不同的组合。但显然我们遗漏了一些东西。

正在发送的内容:

POST https://marketplace.walmartapis.com/v3/feeds?feedType=item HTTP/1.1

Headers:

Authorization: Basic MDc4......
Content-Length: 2277
Accept: application/xml
Content-Type: multipart/formdata
Host: marketplace.walmartapis.com
WM_QOS.CORRELATION_ID: TB123456V32
WM_SEC.ACCESS_TOKEN: eyJra...
WM_SVC.NAME: Walmart Marketplace
Boundary: 1234ran4321dom5678boundary

表单数据负载:

--1234ran4321dom5678boundary
Content-Disposition: formdata; name="xml"
Content-length: 2151


<?xml version="1.0" encoding="UTF-8"?>
<MPItemFeed xmlns="http://walmart.com/">
  <MPItemFeedHeader>
    <version>3.1</version>
    <requestBatchId>......</requestBatchId>
    <feedDate>2019-02-18T19:45:17</feedDate>
    <mart>WALMART_US</mart>
  </MPItemFeedHeader>
  <MPItem>
    <processMode>CREATE</processMode>
    <sku>....</sku>
    <productIdentifiers>
      <productIdentifier>
        <productIdType>UPC</productIdType>
        <productId>..........</productId>
      </productIdentifier>
    </productIdentifiers>
    <MPProduct>
      <productName>.....................</productName>
      <category>
        <SportAndRecreation>
          <SportAndRecreationOther>
            <shortDescription>........................</shortDescription>
            <keyFeatures>
              <keyFeaturesValue>I...............</keyFeaturesValue>
            </keyFeatures>
            <brand>............</brand>
            <manufacturer>.............</manufacturer>
            <manufacturerPartNumber>.............</manufacturerPartNumber>
            <modelNumber>..</modelNumber>
            <mainImageUrl>............</mainImageUrl>
            <count>1</count>
            <isProp65WarningRequired>No</isProp65WarningRequired>
            <sportsLeague>
               <sportsLeagueValue>....</sportsLeagueValue>
            </sportsLeague>
            <keywords>................</keywords>
            <isMemorabilia>......</isMemorabilia>
            <isCollectible>...........</isCollectible>
          </SportAndRecreationOther>
        </SportAndRecreation>
      </category>
    </MPProduct>
    </MPOffer>
        <price>21.95</price>
        <StartDate>2019-02-23T19:45:17</StartDate>
        <EndDate>2019-04-19T19:45:17</EndDate>
        <ShippingWeight>
          <measure>2</measure>
          <unit>lb</unit>
        </ShippingWeight>
        <ProductTaxCode>2038345</ProductTaxCode>
    </MPOffer>
  </MPItem>
</MPItemFeed>
--1234ran4321dom5678boundary--

从 Walmart.pm

回来
$HASH = {
      "error" => {
                 "category" => "DATA",
                 "causes" => {},
                 "code" => "UNSUPPORTED_MEDIA_TYPE.GMP_GATEWAY_API",
                 "errorIdentifiers" => {},
                 "info" => "Unsupported Media Type.",
                 "severity" => "ERROR"
               },
      "xmlns:ns2" => "http://walmart.com/"
};

任何正确方向的指示都将不胜感激。

感谢大家的关注。问题好像解决了

这是一个小错别字

multipart/formdata 需要 multipart/form-data

有了这个改变,我们现在得到一个显示在卖家区域的 Feed ID