2

ここで何が間違っていますか?

まず、既存の注文を取得するリクエストを作成し、取得した 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#です。

4

2 に答える 2

0

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);
于 2013-08-29T06:35:13.573 に答える
0

XML 要求を送信および取得する代わりに、C# で記述された .Net ラッパーを使用することもできます。また、プレーンな XML と http リクエストを使用すると、少しトリッキーな画像をアップロードして変更することもできます。PrestaSharpと呼ばれます。

于 2016-07-10T11:21:25.907 に答える