6

他の Walmart API エンドポイント (具体的には GET リクエスト エンドポイント) への API 呼び出しを正常に行うことができますが、すべてが正しいように見えても、一括アイテム エンドポイント (POST リクエスト) でエラーが発生します。

そのエンドポイントへの参照は次のとおりです https://developer.walmartapis.com/#bulk-createupdate-items


HTTP 応答メタ情報

500内部サーバーエラー

xml

HTTP レスポンス

<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<ns2:errors xmlns:ns2="http://walmart.com/">
    <ns2:error>
        <ns2:code>SYSTEM_ERROR.GMP_GATEWAY_API</ns2:code>
        <ns2:description>Couldn't determine the boundary from the message!</ns2:description>
        <ns2:info>System encountered some internal error.</ns2:info>
        <ns2:severity>ERROR</ns2:severity>
        <ns2:category>DATA</ns2:category>
        <ns2:causes/>
        <ns2:errorIdentifiers/>
    </ns2:error>
</ns2:errors>

HTTP リクエスト:

URL https://marketplace.walmartapis.com/v2/feeds?feedType=item

メソッドPOST

リクエストヘッダー

WM_SVC.NAME: Walmart Marketplace
WM_CONSUMER.ID: {my consumer id key}
WM_QOS.CORRELATION_ID: {my arbitrary text key}
Content-Type: multipart/form-data
Accept: application/xml
WM_SEC.AUTH_SIGNATURE:{my jar-file-generated key}
WM_SEC.TIMESTAMP:{my jar-file-generated timestamp}

POST ペイロード (テキストのみ、パラメーターのキーなし)

<?xml version="1.0" encoding="UTF-8"?>
<MPItemFeed xmlns="http://walmart.com/" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://walmart.com/ MPItem.xsd ">
  <MPItemFeedHeader>
    <version>2.1</version>
    <requestId>qqq</requestId>
    <requestBatchId>qqq1</requestBatchId>
  </MPItemFeedHeader>
  <MPItem>
    <sku>qqq</sku>
    <Product>
      <productName>QQQ 1-Foot S-Video Male to 2 S-Video Female Y Cable (CSV2F)</productName>
      <longDescription><![CDATA[<div class="productDescriptionWrapper"> QVS Premium S-Video Mini4 Male to Two Female Splitter Cable CSV2F A/V Device Cables <div class="emptyClear">
      </div>
      </div>]]></longDescription>
      <shelfDescription><![CDATA[QVS 1-Foot S-Video Male to 2 S-Video Female Y Cable (CSV2F)]]></shelfDescription>
      <shortDescription>QQQ 1-Foot S-Video Male to 2 S-Video Female Y Cable (CSV2F)</shortDescription>
      <mainImage>
        <mainImageUrl>http://images.antonline.com/img-main/500/037229400328.jpg</mainImageUrl>
      </mainImage>
      <productIdentifiers>
        <productIdentifier>
          <productIdType>Item ID</productIdType>
          <productId>46817049</productId>
        </productIdentifier>
      </productIdentifiers>
      <productTaxCode>2038710</productTaxCode>
      <Electronics>
        <brand>QQQ</brand>
        <ElectronicsCables>
        </ElectronicsCables>
      </Electronics>
    </Product>
    <price>
      <currency>USD</currency>
      <amount>12.34</amount>
    </price>
    <shippingWeight>
      <value>1.234</value>
      <unit>LB</unit>
    </shippingWeight>
  </MPItem>
</MPItemFeed>

ノート:

私のコードに起因する問題を除外するために、http 要求を行うときに Google の高度な REST クライアント アプリケーションと POSTMAN を使用してみました。

思いついたものはすべてアレンジしてみました。

GET リクエストが機能する他のエンドポイントを取得したので、認証、IP、ファイアウォールなどの問題ではないことがわかりました。

walmart が提供する jar ファイルによって生成された資格情報 (ドキュメントhttps://developer.walmartapis.com/#jar-executable-recommendedの認証セクションを参照) は、送信先の URL に入力する必要があることを知っています。したがって、jarファイルで間違ったキーを生成するという問題ではないことはわかっています。


仮説:

  • 応答に基づいて、送信しているデータまたはヘッダーに何か問題があるに違いありません。

メッセージから境界を特定できませんでした!

xml にはバランスの取れたタグがないように聞こえますが、この xml を検証しました

  • このエンドポイントのウォルマート API ドキュメントには、ヘッダーを使用するように記載されていますContent-Type: multipart/form-data;。だから私は、失敗の応答をもたらします。

しかし、ペイロードの本文は xml 文字列であるため、このヘッダーを使用しても意味がないように思えます。そうではないContent-Type: application/xmlでしょうか?これもやってみたのですが、上記の失敗したレスポンス(500、SYSTEM_ERROR.GMP_GATEWAY_API、メッセージから境界を判別できませんでした!)で失敗しました。

Content-Type: application/xmlということで、除外できそうです。

  • ウォルマート API のドキュメントには、製品 ID または SKU を変更する方法のみの例が示されていますが、作成については示されていません。製品 ID または SKU の更新に固有の xml タグを省略しただけだと思いますが、その xml ペイロードも 500 応答になります。

私はアイデアがありません。他の誰かがアイテムの一括作成/更新を機能させましたか? 実際に動作するコード例はありますか?

4

5 に答える 5