2016-12-14 5 views
2

Я определил сериализацию для моего объекта idAssignmentResult. Но как мне преобразовать HttpResponseMessage, что IS XML, в его класс? Я получаю сообщение об ошибке:Преобразование HttpResponseMessage в XML для объекта

Value of type 'System.Net.Http.HttpContent' cannot be converted to 'System.Xml.XmlReader'

я сделать оба VB.NET и C#

vb.net

Dim response As New HttpResponseMessage() 
     Try 
      Using client As New HttpClient() 
       Dim request As New HttpRequestMessage(HttpMethod.Post, "url") 
       request.Content = New StringContent(stringWriter.ToString, Encoding.UTF8, "application/xml") 

       response = client.SendAsync(request).Result 
      End Using 
     Catch ex As Exception 
      lblerror.Text = ex.Message.ToString 
     End Try 
    Dim responseString = response.Content 

    Dim xmls As New XmlSerializer(GetType(idAssignmentResult)) 
    Dim assignmentResult As New idAssignmentResult() 
    xmls.Deserialize(responseString, assignmentResult) /// cannot convert HttpContent to XmlReader 

c#

StringWriter stringWriter = new StringWriter(); 
    XmlSerializer serializer = new XmlSerializer(typeof(personV3R)); 
    personV3R person = new personV3R(); serializer.Serialize(stringWriter, person); 
    HttpResponseMessage response = new HttpResponseMessage(); 
    try 
    { 
     using (HttpClient client = new HttpClient()) 
     { 
      HttpRequestMessage request = new HttpRequestMessage(HttpMethod.Post, "url"); 
      request.Content = new StringContent(stringWriter.ToString, Encoding.UTF8, "application/xml"); 
      response = client.SendAsync(request).Result; 
     } 
    } 
    catch (Exception ex) 
    { 
     lblerror.Text = ex.Message.ToString; 
    } 

    var responseString = response.Content; 

    XmlSerializer xmls = new XmlSerializer(typeof(idAssignmentResult)); 
    idAssignmentResult assignmentResult = new idAssignmentResult(); 
    xmls.Deserialize(responseString, assignmentResult); 

ответ

5

Вы Шоуда сделать это как

1.

var responseString = await response.Content.ReadAsStringAsync(); 

2.

var assignmentResult = 
      (idAssignmentResult)xmls.Deserialize(new StringReader(responseString)); 
+0

Это было. Я не понимаю разницу между передачей в объекте и строкой, а ваш номер 2. –

+0

спасибо за ответ. это помогло мне преобразовать ответ в объект. каково обратное преобразование объекта обратно в HttpResponseMessage для отправки назад? –