【问题标题】:upload feed to walmart将提要上传到沃尔玛
【发布时间】:2017-10-03 08:51:23
【问题描述】:

我在尝试将提要上传到沃尔玛时感到头疼,经过多次尝试后,我使用邮递员为我生成 C#restsharp 代码,在邮递员中它可以工作,但是当使用 c#restsharp 代码时,它返回一个神秘的错误。像这样: “没有找到响应类 FeedAcknowledgement 的消息正文作者”

这是什么意思?

这是我的代码:

 string requestUrl = "";
        requestUrl = string.Format("https://marketplace.walmartapis.com/v2/feeds?feedType=inventory");

        string method = "POST";

        // string[] sig = getSig(method, requestUrl).Replace("\r", "").Split('\n');

        var mySig = new Signature(ConsumerID, SecretKEY, requestUrl, method);
        var s = mySig.TimeStamp;
        var returendSigniture = mySig.GetSignature(s);

        var client = new RestClient("https://marketplace.walmartapis.com/v2/feeds?feedType=inventory");
        var request = new RestRequest(Method.POST);
        //request.AddHeader("postman-token", "c325ba5f-813a-f990-7899-6bfc4b14aa1b");
        request.AddHeader("cache-control", "no-cache");
        request.AddHeader("content-type", "multipart/form-data; boundary=----WebKitFormBoundary7MA4YWxkTrZu0gW");
        request.AddHeader("accept", "application/xml");
        request.AddHeader("wm_consumer.id", "--");
        request.AddHeader("wm_sec.auth_signature", returendSigniture);
        request.AddHeader("wm_sec.timestamp", mySig.TimeStamp);
        request.AddHeader("wm_qos.correlation_id", "123456abcdef");
        request.AddHeader("wm_svc.name", "Walmart Marketplace");
        request.AddParameter("multipart/form-data; boundary=----WebKitFormBoundary7MA4YWxkTrZu0gW", "------WebKitFormBoundary7MA4YWxkTrZu0gW\r\nContent-Disposition: form-data; name=\"BOUNDERY\"\r\n\r\n<?xml version=\"1.0\" encoding=\"utf-8\"?>\n<wm:inventory xmlns:wm=\"http://walmart.com/\">\n  <wm:sku>PP00500-2PC</wm:sku>\n  <wm:quantity>\n    <wm:unit>EACH</wm:unit>\n    <wm:amount>120</wm:amount>\n  </wm:quantity>\n  <wm:fulfillmentLagTime>1</wm:fulfillmentLagTime>\n</wm:inventory>\r\n------WebKitFormBoundary7MA4YWxkTrZu0gW--", ParameterType.RequestBody);
        IRestResponse response = client.Execute(request);

【问题讨论】:

  • 我不知道为什么一些无用的流浪汉决定降级我的问题,我正在研究这个问题 2 周,似乎是一个空弹头。除了网络上没有关于 walmart api 的事实。

标签: c# rest restsharp walmart-api


【解决方案1】:

我花了一整天的时间研究如何申请 Walmart v3。我建议你以下两个步骤:

  1. 使用Walmart signer 生成签名令牌。
  2. 您需要使用 HttpWebRequest 以类似于here 所述的方式从沃尔玛获取响应。

【讨论】:

  • 您觉得我的回答有用吗?
【解决方案2】:

我无法让它在 C# 中本地工作,但我确实有一个解决方法。

Java SDK 可以成功地向 Walmart 提交多部分请求。我围绕 SDK 函数编写了一个包装器,它可以接受基本的命令行输入来读取文本文件并发送带有附件的适当调用。从这里,您可以从您的 C# 程序中调用 .jar 文件(我通过动态生成的批处理文件来完成)并通过文本文件接收响应。 This is a sub-optimal system, but it works reliably and when the choice was between updating inventory on 2000 items every day and using some dirty code, I went with the Java wrapper method. C# SDK一出,这个就会被替换掉,但是我相信这也是C# SDK可能会延迟的原因之一。

仅在花了大约一周的时间尝试使边界/流/附件在 C# 中工作并且成功率为零之后才使用此解决方案。案例也提交给了沃尔玛,我能够与他们的一些顶级工程支持人员一起工作,这个问题完全难住了他们。我能够一直跟踪 Java SDK 的执行,一直到构建 Web 请求的内置 Maven / Java 函数,因此 Java 正在处理一个在 C# 中无法立即清楚的多部分请求。 .

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2017-05-02
    • 1970-01-01
    • 1970-01-01
    • 2021-10-21
    • 2021-02-03
    • 2021-07-12
    • 2021-10-29
    • 1970-01-01
    相关资源
    最近更新 更多