У меня есть ответ API, такой:
<MYAPI xsi:noNamespaceSchemaLocation="MYAPI.xsd" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
<SomeTask LastModified = "Some Date" Resource="Some Resource Name">
<Name>Some Name</Name>
<ID>Some ID</ID>
</SomeTask>
... A lot of these <SomeTask>...</SomeTask> are there
</MYAPI>
Я смоделировал для него класс следующим образом:
XmlRoot(ElementName = "MYAPI")]
class MYAPI
{
[XmlElement(ElementName = "SomeTask")]
public List<SomeTask> SomeTask{ get; set; }
}
[XmlRoot(ElementName="SomeTask")]
public class SomeTask {
[XmlElement(ElementName="Name")]
public string Name { get; set; }
[XmlElement(ElementName="ID")]
public string ID { get; set; }
[XmlAttribute(AttributeName="LastModified")]
public string LastModified { get; set; }
[XmlAttribute(AttributeName="Resource")]
public string Resource { get; set; }
}
И я пытаюсь прочитать его так:
static void Main()
{
var handler = new HttpClientHandler();
handler.Credentials = new NetworkCredential("MyUsername", "MyPassword");
var client = new HttpClient(handler);
client.BaseAddress = new Uri("https://sitename.com:PortNumber/");
client.DefaultRequestHeaders.Accept.Clear();
client.DefaultRequestHeaders.Accept.Add(new MediaTypeWithQualityHeaderValue("application/xml"));
var formatters = new List<MediaTypeFormatter>()
{
new XmlMediaTypeFormatter(){ UseXmlSerializer = true }
};
var myApi = new MYAPI();
HttpResponseMessage response = client.GetAsync("/api/mysites/tasks").Result;
if (response.IsSuccessStatusCode)
{
myApi = response.Content.ReadAsAsync<MYAPI>(formatters).Result;
}
}
Но с этим кодом я всегда получаю это исключение: No MediaTypeFormatter is available to read an object of type 'MYAPI' from content with media type 'application/xml'.
Кто-нибудь, пожалуйста, подскажите мне, как это исправить?Спасибо!