2013-05-04 2 views
1

В настоящее время я работаю над некоторой функциональностью, которая заставляет httppost получать ответ.Как преобразовать поток считывателя в объект класса?

Вот код, который я сейчас работаю с:

public string SubmitRequest(string postUrl, string contentType, string postValues) 
    { 
     var req = WebRequest.Create(postUrl); 
     req.Method = "POST"; 
     req.ContentType = contentType; 

     try 
     { 
      using (var reqStream = req.GetRequestStream()) 
      { 
       var writer = new StreamWriter(reqStream); 
       writer.WriteLine(postValues); 
      } 

      var resp = req.GetResponse(); 

      using (var respStream = resp.GetResponseStream()) 
      { 
       var reader = new StreamReader(respStream); 
       return reader.ReadToEnd().Trim(); 
      } 

     } 
     catch(WebException ex) 
     { 
      // do something here 
     } 

     return string.Empty; 
    } 

Функция возвращает XML в виде строки, например:

<result> 
    <code>Failed</code> 
    <message>Duplicate Application</message> 
</result> 

Это должен быть преобразован в объект класса - но Я не уверен, как это сделать правильно.

Любые советы, оцененные.

+0

Знаете ли вы, какие ответы вы можете получить? Я имею в виду, какие узлы могут присутствовать в ответе – ppetrov

+1

Взгляните на это сообщение SO: http://stackoverflow.com/questions/10518372/how-to-deserialize-xml-to-object Надеюсь, что это поможет. –

ответ

2

Вы хотите десериализовать возвращенный xml в объект. Это базовый пример:

//m is the string based xml representation of your object. Make sure there's something there 
if (!string.IsNullOrWhiteSpace(m)) 
    { 
     //Make a new XMLSerializer for the type of object being created 
     var ser = new XmlSerializer(typeof(yourtype)); 

     //Deserialize and cast to your type of object 
     var obj = (yourtype)ser.Deserialize(new StringReader(m)); 

     return obj ; 
    } 
+0

Звучит неплохо - проверит утром. Спасибо – dotnetnoob

+0

Работа - спасибо Mattbo! – dotnetnoob

Смежные вопросы