【发布时间】:2017-04-07 16:02:47
【问题描述】:
我在向 Walmart Marketplace API 发送批量数据交换的 POST 请求时遇到问题,希望得到一些帮助。
背景: 我已经成功编写了签名验证例程,并且可以成功执行 GET 命令,例如获取产品等。这表明验证签名的格式正确,并且标头(大部分)是正确的。
问题: 我收到 400 错误请求响应,请求内容无效。尝试向 Walmarts API 提交测试提要时的响应。我读过这个问题很常见,但我还没有找到任何论坛帖子可以清楚地解释实际问题或如何解决它。这是我当前的参数:
ARCA ARCA Rest Client For Chrome
网址:
https://marketplace.walmartapis.com/v2/feeds?feedType=inventory
标题:
Accept: application/xml
WM_SVC.NAME: Walmart Marketplace
WM_CONSUMER.ID: <Consumer ID>
WM_SEC.AUTH_SIGNATURE: <Good Auth Signature>
WM_QOS.CORRELATION_ID: 15649814651
WM_SEC.TIMESTAMP: <Timestamp>
WM_CONSUMER.CHANNEL.TYPE: <Channel Type>
Content-Type: multipart/form-data
文件附件(虽然已经尝试过,但不是原始有效负载)
<?xml version="1.0" encoding="utf-8"?>
<InventoryFeed xmlns="http://walmart.com/">
<InventoryHeader>
<version>1.4</version>
</InventoryHeader>
<inventory>
<sku>KON04418</sku>
<quantity>
<unit>EACH</unit>
<amount>4</amount>
</quantity>
<fulfillmentLagTime>1</fulfillmentLagTime>
</inventory>
</InventoryFeed>
当我使用这个完全相同的 XML 并在 Walmart API Explorer 测试它时 该文件被接受,响应代码为 200(OK)。
我已使用 Notepad++ XML Tools 插件验证 XML 符合 Walmart 提供的 XSD。我看过很多关于需要应用边界的帖子,所以我还尝试更改 Content-Type 并添加边界,但未能成功接受请求。
非常感谢任何帮助让此请求返回响应代码 200。
最后,一旦此请求在 ARCA 中验证,我将在 C# 中实现。我已经编写了所有代码,但是关于如何将附件添加到 HttpWebRequest 与仅提交原始数据流之间存在一些问题。如果可以再次说明差异,我将不胜感激。
【问题讨论】:
-
过去几个月我一直在使用 Walmart API 进行订单和库存。我已经看到它工作正常,随机返回 400 个响应,没有明显错误,当天晚些时候,同样的 API 调用处理了 200 个响应。
标签: c# rest http http-status-code-400 walmart-api