2017-05-05 50 views
1

我打破了我的头尝试上传饲料沃尔玛,经过多次尝试后,我用邮递员生成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); 
+0

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

回答

0

我花了一整天搞清楚如何请求沃尔玛V3。我建议你以下两个步骤:

  1. 使用Walmart signer为了生成签名的令牌。
  2. 您将需要使用HttpWebRequest来获取沃尔玛的响应,其方式类似于here
+0

您是否认为我的回答有用? –

0

我一直没有能够得到这个在C#本地工作,但我有一个解决办法。

Java SDK可以成功向沃尔玛提交多部分请求。我为SDK函数编写了一个封装器,它可以接受基本的命令行输入来读取文本文件并发送适当的调用附加文件。从这里开始,您可以从C#程序中调用.jar文件(我通过动态生成的批处理文件)并通过文本文件接收回应。这是一个次优的系统,但它可以可靠地工作,并且当每天更新2000个项目的库存和使用一些脏代码之间的选择时,我使用Java包装器方法。一旦C#SDK出来,它就会被替换掉,但我相信这是C#SDK可能被延迟的原因之一。

此解决方案仅在花了大约一周的时间尝试获取边界/流/附件在C#中工作并且零成功后才被使用。案件也提交给沃尔玛,我能够与他们的一些顶级工程技术支持人员一起工作,这个问题完全阻碍了他们。我能够将Java SDK执行一直追溯到构建Web请求的内置Maven/Java函数,因此Java正在处理一些多部分请求,这些请求在C#中不会立即清除, 。