Foros del Web » Programando para Internet » ASPX (.net) »

Leer XML obtenido de un WebService

Estas en el tema de Leer XML obtenido de un WebService en el foro de ASPX (.net) en Foros del Web. Hola a [email protected]!!! Recientemente he tenido que crear un cliente para recibir ciertos datos de un WebService. Y como soy un poco nuevo, ví un ...
  #1 (permalink)  
Antiguo 11/07/2018, 03:17
 
Fecha de Ingreso: julio-2015
Ubicación: Gran Canaria
Mensajes: 3
Antigüedad: 3 años, 1 mes
Puntos: 0
Leer XML obtenido de un WebService

Hola a [email protected]!!!

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

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

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

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

Me funciona, dado que veo los datos que me devuelve, que es en formato XML

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:

Código XML:
Ver original
  1. <MEDICACION>
  2.      <ID>8544447</ID>
  3.      <NOM>NOVOCATIL 100ML</NOM>
  4.      <INICIO TRATAMIENTO>07/07/2018</INICIO TRATAMIENTO>
  5.      <NUM_EXPEDIENTE>887978</NUM_EXPEDIENTE>
  6.      <ACTIVO>N</ACTIVO>
  7.      <TIPO_TRATAMIENTO>CRONICO</TIPO_TRATAMIENTO>
  8. </MEDICACION>
  9.  
  10. <MEDICACION>
  11.      <ID>5447456</ID>
  12.      <NOM>VOLTAREX 20MG</NOM>
  13.      <INICIO TRATAMIENTO>01/07/2018</INICIO TRATAMIENTO>
  14.      <NUM_EXPEDIENTE>54447</NUM_EXPEDIENTE>
  15.      <ACTIVO>S</ACTIVO>
  16.      <TIPO_TRATAMIENTO>TEMPORAL</TIPO_TRATAMIENTO>
  17. </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!!!
  #2 (permalink)  
Antiguo 18/07/2018, 15:49
 
Fecha de Ingreso: enero-2004
Ubicación: Ciudad de México
Mensajes: 468
Antigüedad: 14 años, 8 meses
Puntos: 13
Respuesta: Leer XML obtenido de un WebService

Hola.

Convierte ese XML a una tabla/arreglo, carga esos datos en un GridView, y ya puedes ordenarlo por la columna que quieras.
  #3 (permalink)  
Antiguo 27/08/2018, 05:02
 
Fecha de Ingreso: julio-2015
Ubicación: Gran Canaria
Mensajes: 3
Antigüedad: 3 años, 1 mes
Puntos: 0
Respuesta: Leer XML obtenido de un WebService

Gracias por la respuesta. He intentado hacerlo pero no hay manera.

De ésta forma intenté pasarlo a un GridView pero se queda la web en blanco y no me muestra nada..

Código C++:
Ver original
  1. using (Stream stream = request.GetRequestStream())
  2.         {
  3.             SOAPReqBody.Save(stream);
  4.         }
  5.  
  6.         HttpWebResponse response = (HttpWebResponse)request.GetResponse();
  7.         var xmldoc = new XmlDocument();
  8.         DataSet ds = new DataSet();
  9.  
  10.         xmldoc.Load(response.GetResponseStream());
  11.         ds.ReadXml(xmldoc.OuterXml);
  12.  
  13.         GridView1.DataSource =ds;
  14.         GridView1.DataBind;

¿Alguna sugerencia?

Muchas gracias!



La zona horaria es GMT -6. Ahora son las 21:37.