C sharp - Leer XML obtenido de un WebService

 
Vista:
sin imagen de perfil
Val: 1
Ha aumentado su posición en 10 puestos en C sharp (en relación al último mes)
Gráfica de C sharp

Leer XML obtenido de un WebService

Publicado por Josue (1 intervención) el 13/07/2018 14:42:46
Hola a tod@s!!!

Recientemente he tenido que crear un cliente para recibir ciertos datos de un WebService. Y como soy un poco nuevo, ví un código que me funcionó a la hora de obtener los datos de respuesta. Mi código ahora está así...

Mediante éstos dos métodos creo la petición y envío al servicio Web

1
2
3
4
5
6
7
8
9
10
11
12
13
14
public HttpWebRequest CreateSOAPWebRequest()
{
    //Hacemos la solicitd web
    HttpWebRequest Req = (HttpWebRequest)WebRequest.Create(@"url del servicio");
    //SOAPAction
    Req.Headers.Add(@"SOAPAction:metodo del servicio");
    //Tipo de contenido
    Req.ContentType = "text/xml;charset=\"utf-8\"";
    Req.Accept = "text/xml";
    //metodo HTTP
    Req.Method = "POST";
    //Devuelve HttpRequest
    return Req;
}

Y éste es el segundo método, que hace la petición, la envía y recibe los datos....

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
public void InvokeSevice(String id, String nif, String cod)
{
    //Llamando al método CreateSOAPWebRequest
    HttpWebRequest request = CreateSOAPWebRequest();
 
    XmlDocument SOAPReqBody = new XmlDocument();
    //Solicitud de cuerpo SOAP
    SOAPReqBody.LoadXml(@"<?xml version=""1.0"" encoding=""utf-8""?>
        <soapenv:Envelope xmlns:soapenv=""http://schemas.xmlsoap.org/soap/envelope/"" xmlns:tcsa=""http://tcsa.es/"">
       <soapenv:Header>
       </soapenv:Header>
       <soapenv:Body>
          <tcsa:obtenerDatos>
             <tcsa:IDPaciente>" + id + @"</tcsa:IDPaciente>
             <tcsa:NIF_Acceso>" + nif + @"</tcsa:NIF_Acceso>
             <tcsa:CodCentro>" + cod + @"</tcsa:CodCentro>
          </tcsa:obtenerDatos>
       </soapenv:Body>
    </soapenv:Envelope>");
 
    using (Stream stream = request.GetRequestStream())
    {
        SOAPReqBody.Save(stream);
    }
    //Obteniendo Resspuesta de request
    using (WebResponse Serviceres = request.GetResponse())
    {
        using (StreamReader rd = new StreamReader(Serviceres.GetResponseStream()))
        {
            //leyendo stream
            var ServiceResult = rd.ReadToEnd();
 
            xmlrespuesta.Text = ServiceResult.ToString();
            rd.Close();
        }
    }
}

Me funciona, dado que veo los datos que me devuelve, que es en formato XML. Pero los veo todo en un misma línea, sin ningún formato.

Mi duda es la siguiente, ¿Como puedo mostrar los datos mejor ordenados? Al final el XML me devolverá distintos medicamentos del paciente de la siguiente forma:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
<MEDICACION>
     <ID>8544447</ID>
     <NOM>NOVOCATIL 100ML</NOM>
     <INICIO TRATAMIENTO>07/07/2018</INICIO TRATAMIENTO>
     <NUM_EXPEDIENTE>887978</NUM_EXPEDIENTE>
     <ACTIVO>N</ACTIVO>
     <TIPO_TRATAMIENTO>CRONICO</TIPO_TRATAMIENTO>
</MEDICACION>
 
<MEDICACION>
     <ID>5447456</ID>
     <NOM>VOLTAREX 20MG</NOM>
     <INICIO TRATAMIENTO>01/07/2018</INICIO TRATAMIENTO>
     <NUM_EXPEDIENTE>54447</NUM_EXPEDIENTE>
     <ACTIVO>S</ACTIVO>
     <TIPO_TRATAMIENTO>TEMPORAL</TIPO_TRATAMIENTO>
</MEDICACION>

Pero no se como ordenar esa información en una página asp para que se vea mejor.
Quizás creando una instancia de XmlDocument me ayude, pero hasta ahora no he sabido almacenar los datos de respuesta en un objeto de esa clase.

Si alguien me puede echar una mano se lo agradecería.

Un saludo!!!
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder
sin imagen de perfil
Val: 323
Bronce
Ha mantenido su posición en C sharp (en relación al último mes)
Gráfica de C sharp

Leer XML obtenido de un WebService

Publicado por Agustin (104 intervenciones) el 13/07/2018 16:52:18
No hace falta crear el XML a mano capo.

Fijate en Visual Studio Add Service Reference y le apuntás al WSDL del servicio.

Te crea una clase con los metodos para consumir el servicio y los parametros que corresponde, de forma automatica.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
1
Comentar