他の 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 応答になります。
私はアイデアがありません。他の誰かがアイテムの一括作成/更新を機能させましたか? 実際に動作するコード例はありますか?