0

Rest Sharp を使用して POST を作成しようとすると問題が発生します。最新の標準に正確に準拠していない Web サービスを呼び出そうとしています。投稿の本文にリクエスト XML を投稿できるようにする必要があります。

RestRequest オブジェクトに対して単に request.AddBody(xmlObject) を実行すると、text/xml というパラメーターが要求に追加されます。この場合、サーバーから「Exception throws: Content is not allowed in prolog」というエラー応答が返されます。これは、サーバーがパラメーターのキー (text/xml=) を値と共に処理しようとしていることを示しています。

RAW 本文フィールドに目的の xml 要求を指定して Chrome で REST コンソールを使用すると、すべてが期待どおりに機能します。

これをRest Sharpで機能させる方法についてのアイデアはありますか?

編集: request.AddFile("name", bytes_to_add, "file_name") を使用する必要があるようです。ただし、それを実行しようとすると、例外 (「System.InvalidOperationException: このプロパティは、書き込みが開始された後は設定できません。」) が発生します。これは、解決されなかった RestSharpの問題のようです。HttpWebRequest ライブラリを使用してリクエストを作成する必要があるかもしれません。

4

1 に答える 1

1

あなたはそれを考えすぎているかもしれません。RestSharp.AddBody は、オブジェクトをパラメーターとして受け取り、RequestFormat プロパティに応じて、JSON または XML シリアライザーを使用して正しい形式に自動的にシリアル化します。

XML を直接追加しても意味がありません。REST の魔法の 1 つは、XML だけでなく、複数の形式をサポートしていることです。RestSharp はそれを念頭に置いて作成されているため、そのパブリック インターフェイスはすべて POCO を使用するだけです。

簡単な解決策は、オブジェクトをシリアル化しないことです。xmlObject を追加する必要はありません。実際の C# オブジェクトを AddBody メソッドに渡して、シリアル化を処理させます。

于 2012-11-21T14:05:49.510 に答える