Нет MediaTypeFormatter для чтения объекта типа 'MYAPI' из содержимого с типом медиа 'application / xml' - PullRequest
0 голосов
/ 11 марта 2019

У меня есть ответ 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'.

Кто-нибудь, пожалуйста, подскажите мне, как это исправить?Спасибо!

...