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

我在这做错了什么?

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

         

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

似乎xml参数必须是RequestBody类型。 如果未指定,则会自动将其设置为键入GetOrPost,这会导致“String无法解析为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请求上传和更改图像,这有点棘手。 它被称为PrestaSharp 。