短い C# アプリケーションで使用したい公開 Web サービスがあります: http://ws.parlament.ch/
この Web サービスから返された XML の先頭に「BOM」があるため、RESTSharp は XML の逆シリアル化に失敗し、次のエラー メッセージが表示されます。
応答の取得中にエラーが発生しました。詳細については、内部の詳細を確認してください。---> System.Xml.XmlException:ルート レベルのデータが無効です。 行1、位置 1
。 System.Xml.Linq.XDocument.Load(XmlReader リーダー、LoadOptions オプション) の System.Xml.XmlTextReaderImpl.Read() での ParseDocumentContent() System.Xml.Linq.XDocument.Parse(文字列テキスト、LoadOptions オプション) で
System.Xml.Linq.XDocument.Parse(文字列テキスト) で RestSharp.Deserializers.XmlDeserializer.Deserialize[T](IRestResponse 応答) で RestSharp.RestClient.Deserialize[T](IRestRequest 要求、IRestResponse 生)
--- 終了内部例外スタック トレース ---
http://ws.parlament.ch/sessions?format=xmlを使用して「セッション」のリストを取得する簡単なサンプルを次に示します。
public class Session
{
public int Id { get; set; }
public DateTime? Updated { get; set; }
public int? Code { get; set; }
public DateTime? From { get; set; }
public string Name { get; set; }
public DateTime? To { get; set; }
}
static void Main(string[] args)
{
var request = new RestRequest();
request.RequestFormat = DataFormat.Xml;
request.Resource = "sessions";
request.AddParameter("format", "xml");
var client = new RestClient("http://ws.parlament.ch/");
var response = client.Execute<List<Session>>(request);
if (response.ErrorException != null)
{
const string message = "Error retrieving response. Check inner details for more info.";
var ex = new ApplicationException(message, response.ErrorException);
Console.WriteLine(ex);
}
List<Session> test = response.Data;
Console.Read();
}
返された xml を最初に Fiddler で操作して最初の 3 ビット (「BOM」) を削除すると、上記のコードが機能します! 誰かがこれをRESTSharpで直接処理するのを手伝ってくれませんか? 私は何を間違っていますか?よろしくお願いします!