我想在简短的 C# 应用程序中使用一个公共 Web 服务: http ://ws.parlament.ch/
从该 Web 服务返回的 XML 开头有一个“BOM”,这会导致 RESTSharp 无法反序列化 XML,并显示以下错误消息:
检索响应时出错。检查内部细节以获取更多信息。---> System.Xml.XmlException:根级别的数据无效。第 1 行,位置 1。
在 System.Xml.XmlTextReaderImpl.Throw (String res, String arg) 在 System.Xml.XmlTextReaderImpl.ParseRootLevelWhitespace() 在 System.Xml.XmlTextReaderImpl 的 System.Xml.XmlTextReaderImpl.Throw(Exception e) 。 ParseDocumentContent() at System.Xml.XmlTextReaderImpl.Read() at System.Xml.Linq.XDocument.Load(XmlReader reader, LoadOptions options) at System.Xml.Linq.XDocument.Parse(String text, LoadOptions options)
在 System.Xml.Linq.XDocument.Parse(String text) 在 RestSharp.Deserializers.XmlDeserializer.Deserialize[T](IRestResponse response) 在 RestSharp.RestClient.Deserialize[T](IRestRequest request, IRestResponse raw)
--- End内部异常堆栈跟踪 ---
这是使用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();
}
当我第一次使用 Fiddler 操作返回的 xml 以删除前 3 位(“BOM”)时,上面的代码有效!有人可以帮我直接在 RESTSharp 中处理这个问题吗?我究竟做错了什么?先感谢您!