Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/285.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 使用沃尔玛市场API源上载项目时出错_C#_Multipartform Data_Marketplace_Datafeed_Walmart Api - Fatal编程技术网

C# 使用沃尔玛市场API源上载项目时出错

C# 使用沃尔玛市场API源上载项目时出错,c#,multipartform-data,marketplace,datafeed,walmart-api,C#,Multipartform Data,Marketplace,Datafeed,Walmart Api,我正在尝试使用沃尔玛市场API上传商品(批量创建商品) 但始终会得到一个响应,即500内部服务器错误。有什么想法吗? 其他Api函数可以,但此函数不行。。 实际上,其他人使用的方法是“application/xml”,但这是“multipart/formdata” 请注意,下面代码中的XML字符串/示例取自,然后我更改了IDs属性 public bool RequestUpdateItem() { string strBaseUr

我正在尝试使用沃尔玛市场API上传商品(批量创建商品) 但始终会得到一个响应,即500内部服务器错误。有什么想法吗? 其他Api函数可以,但此函数不行。。 实际上,其他人使用的方法是“application/xml”,但这是“multipart/formdata”

请注意,下面代码中的XML字符串/示例取自,然后我更改了IDs属性

     public bool RequestUpdateItem()
        {
                    string strBaseUrl = string.Format("https://marketplace.walmartapis.com/v2/feeds?feedType=item");
                    string strRequestMethod = "POST";
                    WalmartSignature Signature = new WalmartSignature(consumerId, privateEncodedStr, strBaseUrl, strRequestMethod);

                    string strSignature = string.Empty;
                    HttpWebRequest httpWebRequest = null;
                    HttpWebResponse httpWebResponse = null;
                    WalmartOrderModel orderModel = new WalmartOrderModel();
                    StringBuilder strBuilder = new StringBuilder();
                    bool bReturnValue = false;
                    try
                    {
                        strSignature = Signature.GetSignature(null);   // null -> generate timestamp
                        httpWebRequest = (HttpWebRequest)WebRequest.Create(strBaseUrl);
                        httpWebRequest.Method = strRequestMethod;
                        httpWebRequest.Accept = "application/xml";
                        httpWebRequest.ContentType = "multipart/form-data;";

                        httpWebRequest.Headers.Add("WM_SVC.NAME", "Walmart Marketplace");
                        httpWebRequest.Headers.Add("WM_SEC.AUTH_SIGNATURE", strSignature);
                        httpWebRequest.Headers.Add("WM_CONSUMER.ID", Signature.ConsumerId);
                        httpWebRequest.Headers.Add("WM_SEC.TIMESTAMP", Signature.TimeStamp);
                        httpWebRequest.Headers.Add("WM_QOS.CORRELATION_ID", Guid.NewGuid().ToString());



                        string strRequestBody =
        @"<?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>333pecEl55nics</requestId>
        <requestBatchId>333ecElect55cs38</requestBatchId>
        </MPItemFeedHeader>   
        <MPItem>
        <sku>BDK72wsd44f</sku>
        <Product>
        <productName>QVS</productName>
        <longDescription>QVS</longDescription>
        <shelfDescription>QVS</shelfDescription>
        <shortDescription>QVS</shortDescription>
        <mainImage>
        <mainImageUrl>http://images.antonline.com/img-main/500/037229400328.jpg</mainImageUrl>
        </mainImage>
        <productIdentifiers>
        <productIdentifier>
        <productIdType>UPC</productIdType>
        <productId>220740171234</productId>
        </productIdentifier>
        </productIdentifiers>
        <productTaxCode>2038710</productTaxCode>
        <additionalProductAttributes>
        <additionalProductAttribute>
        <productAttributeName>product_id_override</productAttributeName>
        <productAttributeValue>true</productAttributeValue>
        </additionalProductAttribute>
        </additionalProductAttributes>
        <Electronics>
        <brand>QVS</brand>
        <ElectronicsCables>
        </ElectronicsCables>
        </Electronics>
        </Product>
        <price>
        <currency>USD</currency>
        <amount>99.29</amount>
        </price>
        <shippingWeight>
        <value>0.12</value>
        <unit>LB</unit>
        </shippingWeight>
        </MPItem>
        </MPItemFeed>";


                        MemoryStream stream = new MemoryStream();
                        StreamWriter writer = new StreamWriter(stream);
                        writer.Write(strRequestBody);
                        writer.Flush();
                        stream.Position = 0;

                        httpWebRequest.ContentLength = stream.Length;


                        using (Stream requestStream = httpWebRequest.GetRequestStream())
                        {
                            stream.CopyTo(requestStream);
                            //requestStream.Write(stream, 0, stream.Length);

                            httpWebResponse = (HttpWebResponse)httpWebRequest.GetResponse();
                            if (httpWebResponse.StatusCode == HttpStatusCode.OK)
                            {
                                Stream streamResponse = httpWebResponse.GetResponseStream();
                                var responseResult = XDocument.Load(streamResponse);
                            }
                        }

                    }
                    catch (Exception ex)
                    {
                        Console.WriteLine("RequestUpdateItem(): " + ex);
                    }

                    return bReturnValue;
                }
public bool RequestUpdateItem()
{
string strBaseUrl=string.Format(“https://marketplace.walmartapis.com/v2/feeds?feedType=item");
字符串strRequestMethod=“POST”;
WalmartSignature=新的WalmartSignature(consumerId、privateEncodedStr、strBaseUrl、strRequestMethod);
string strSignature=string.Empty;
HttpWebRequest HttpWebRequest=null;
HttpWebResponse HttpWebResponse=null;
WalmartOrderModel orderModel=新的WalmartOrderModel();
StringBuilder strBuilder=新StringBuilder();
布尔值=假;
尝试
{
strSignature=Signature.GetSignature(null);//null->生成时间戳
httpWebRequest=(httpWebRequest)WebRequest.Create(strBaseUrl);
httpWebRequest.Method=strRequestMethod;
httpWebRequest.Accept=“application/xml”;
httpWebRequest.ContentType=“多部分/表单数据;”;
httpWebRequest.Headers.Add(“WM_SVC.NAME”,“沃尔玛市场”);
httpWebRequest.Headers.Add(“WM_SEC.AUTH_签名”,strSignature);
httpWebRequest.Headers.Add(“WM_CONSUMER.ID”,Signature.ConsumerId);
httpWebRequest.Headers.Add(“WM_SEC.TIMESTAMP”,Signature.TIMESTAMP);
httpWebRequest.Headers.Add(“WM_QOS.CORRELATION_ID”,Guid.NewGuid().ToString());
字符串strRequestBody=
@"
2.1
333pecEl55nics
333ecElect55cs38
BDK72wsd44f
QVS
QVS
QVS
QVS
http://images.antonline.com/img-main/500/037229400328.jpg
UPC
220740171234
2038710
产品标识覆盖
真的
QVS
美元
99.29
0.12
磅
";
MemoryStream stream=新的MemoryStream();
StreamWriter writer=新StreamWriter(流);
writer.Write(strRequestBody);
writer.Flush();
流位置=0;
httpWebRequest.ContentLength=stream.Length;
使用(Stream requestStream=httpWebRequest.GetRequestStream())
{
CopyTo(requestStream);
//requestStream.Write(stream,0,stream.Length);
httpWebResponse=(httpWebResponse)httpWebRequest.GetResponse();
if(httpWebResponse.StatusCode==HttpStatusCode.OK)
{
streamResponse=httpWebResponse.GetResponseStream();
var responseResult=XDocument.Load(streamResponse);
}
}
}
捕获(例外情况除外)
{
WriteLine(“RequestUpdateItem():”+ex);
}
返回值;
}

Fixed link有没有发现这个问题?我想你也应该使用多部分/表单数据发送一个文件,但是我得到了类似的错误我在请求体(XML)上添加了“--BOUNDARY--”字符串,比如“@”BOUNDARY--…--BOUNDARY--”,BOUNDARY的东西表示开始和结束的位置。