Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/306.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# 通过webservice api更新Prestashop中的订单状态_C#_Web Services_Prestashop - Fatal编程技术网

C# 通过webservice api更新Prestashop中的订单状态

C# 通过webservice api更新Prestashop中的订单状态,c#,web-services,prestashop,C#,Web Services,Prestashop,我做错了什么 首先,我请求获取现有订单,并更改检索到的xml中current_status字段的值。然后我用修改后的xml作为参数发出PUT请求,但我得到如下响应: <?xml version="1.0" encoding="UTF-8"?> <prestashop xmlns:xlink="http://www.w3.org/1999/xlink"> <errors> <error> <code><![CDATA[127]]&g

我做错了什么

首先,我请求获取现有订单,并更改检索到的xml中current_status字段的值。然后我用修改后的xml作为参数发出PUT请求,但我得到如下响应:

<?xml version="1.0" encoding="UTF-8"?>
<prestashop xmlns:xlink="http://www.w3.org/1999/xlink">
<errors>
<error>
<code><![CDATA[127]]></code>
<message><![CDATA[XML error : String could not be parsed as XML
XML length : 2864
Original XML : xml=%3C%3Fxml+version%3D%221%2E0%22+encoding...%3C%2Fprestashop%3E%0A]]></message>
</error>
</errors>
</prestashop>


当我调试代码时,在执行之前的PUT请求中xml参数没有问题。那么“原始XML”是如何显示XML编码的呢?我必须设置某种编码吗?我的代码是C#。

似乎xml参数必须是RequestBody类型。如果未指定,它将自动设置为GetOrPost类型,这将导致“字符串无法解析为XML”错误。我不确定每件事是如何运作的,但似乎这就是问题的解决办法

RestRequest request;
request = new RestRequest("api/orders/" + orderID, Method.GET);
IRestResponse response = client.Execute(request);

XElement orderXML = XElement.Parse(response.Content);
XElement orderEl = orderXML.Descendants().FirstOrDefault();
orderEl.Element("current_state").Value = "10";    

request = new RestRequest("api/orders", Method.PUT);
request.AddParameter("xml", orderXML.ToString(), ParameterType.RequestBody);
IRestResponse response2 = client.Execute(request);

您还可以使用C#编写的.Net包装器,而不是发送和检索XML请求。它还允许您上载和更改图像,这在使用普通XML和http请求时有点棘手。它被称为