Foros del Web » Programación para mayores de 30 ;) » .NET »

DLL que consuma un web service

Estas en el tema de DLL que consuma un web service en el foro de .NET en Foros del Web. Hola a todos antes que nada agradecere la ayuda que me puedan prestar. La verdad tengo un dilema tengo la necesidad de crear una DLL ...
  #1 (permalink)  
Antiguo 17/01/2014, 16:25
Avatar de swatt  
Fecha de Ingreso: septiembre-2010
Mensajes: 155
Antigüedad: 13 años, 7 meses
Puntos: 4
DLL que consuma un web service

Hola a todos antes que nada agradecere la ayuda que me puedan prestar.

La verdad tengo un dilema tengo la necesidad de crear una DLL en C#.net y que esta a su ves consuma un web service, pero la verdad no tengo idea de como atacarlo, si alguien me pudiera indicar algun material se los agradeceria mucho.

Saludos a todos.
  #2 (permalink)  
Antiguo 21/01/2014, 17:08
Avatar de drako_darpan  
Fecha de Ingreso: octubre-2008
Ubicación: Sinaloa
Mensajes: 617
Antigüedad: 15 años, 6 meses
Puntos: 58
Respuesta: DLL que consuma un web service

Hola que tal, espero te sirva esto:

1.- Tienes que anexar un Referencia Web ( Aquí tienes que poner la ruta de tu WS )
2.- Como consejo ( Y porque me paso ami jejejeje ), te recomiendo que generes la URL tu al vuelo, puesto que la Ip y el Puerto pueden ser dinamicos.
Ejemplo:

Código C#:
Ver original
  1. string sUrl = "http://" + sUrlConsultar.ToString().Trim() + ":" + sPuertoWS.ToString().Trim() + "/wsX/wsX?wsdl";

3.- Creas un constructor para el WS ( Para esto haces referencia a tus WS:
using rnd = wsX.Modulo_WS_Consultar; ).
Ejemplo:

Código C#:
Ver original
  1. rnd.ccWs[] Ws = null;

4.- Inicializas tu método del WS:
Ejemplo:

Código C#:
Ver original
  1. rnd.wsX wsX = new rnd.Metodos_WS_Usar();


5.- Pasa la URL armada a tu WS.
Ejemplo:

Código C#:
Ver original
  1. wsX.Url = sUrl;

6.- Con el constructor creado en el paso 3, mandas llamar la función de tu WS.
Ejemplo:

Código C#:
Ver original
  1. Ws = wsX.Funcion_Ejecutar();

6.- Validas que no sea null, el constructor, para mostrar la información.
Ejemplo:

Código C#:
Ver original
  1. if (Ws != null)

7.- La información se lee igual que un reader, pero se tiene que hacer al constructor, en este caso Ws.

Listo eso es todo, se lee un poco complicado, pero no lo es
  #3 (permalink)  
Antiguo 22/01/2014, 14:02
Avatar de Namiwis  
Fecha de Ingreso: mayo-2013
Ubicación: Crustaceo Cascarudo
Mensajes: 162
Antigüedad: 11 años
Puntos: 10
Respuesta: DLL que consuma un web service

Yo lo hago con SoapRequest y SoapResponse, algo así.

Creas el SoapRequest

Código:
HttpWebRequest request = CreateWebRequest();
                XmlDocument soapEnvelopeXml = new XmlDocument();
                soapEnvelopeXml.LoadXml(@"<?xml version=""1.0"" encoding=""utf-8""?><soap:Envelope xmlns:soap=""http://schemas.xmlsoap.org/soap/envelope/"" xmlns:xsi=""http://www.w3.org/2001/XMLSchema-instance"" xmlns:xsd=""http://www.w3.org/2001/XMLSchema""><soap:Body><CelsiusToFahrenheit xmlns=""http://www.w3schools.com/webservices/""><Celsius>" + Celsius+ "</Celsius></CelsiusToFahrenheit ></soap:Body></soap:Envelope>");
Código:
using (Stream stream = request.GetRequestStream())
                {
                    soapEnvelopeXml.Save(stream);
                }
Consumes

Código:
//Obtengo la respuesta del SoapRequest
                using (WebResponse response = request.GetResponse())
                {
                    //Proceso la respuesta
                    using (StreamReader rd = new StreamReader(response.GetResponseStream()))
                    {
                        //Cacho toda la respuesta en bruto y la meto en una variable String
                        string soapResult = rd.ReadToEnd();

                        //Meto la respuesta string en un documento tipo XML.
                        XmlDocument RespuestaSoap = new XmlDocument();
                        RespuestaSoap.LoadXml(soapResult);

                        //Aqui obtengo los valores de la respuesta para enviarlos, debo separarlos!!
                        XmlNodeList TPruebaResult = RespuestaSoap.GetElementsByTagName("CelsiusToFahrenheitResult");

                        //Cierro el StreamReader
                        rd.Close();
}
}
Y listo ya procesas tu respuesta, se me hace una manera limpia y facil de consumirla, para armar el SoapRequest debes guiarte del WSDL proporcionado del WebService

CLASE WebResquest


Código:
public HttpWebRequest CreateWebRequest()
        {
            //Aqui apunto hacia la URL
            HttpWebRequest webRequest = (HttpWebRequest)WebRequest.Create(@"http://www.w3schools.com/webservices/tempconvert.asmx");
            webRequest.Headers.Add(@"SOAP:Action");
            //Codificacion de la peticion debe ser UTF8 para no tener problemas con el XML.
            webRequest.ContentType = "text/xml;charset=\"utf-8\"";
            webRequest.Accept = "text/xml";
            //Metodo de envio en este caso sera POST.
            webRequest.Method = "POST";
            return webRequest; 
        }
Este ejemplo fue armado de un WebService publico, normalmente la información para armar tu SoapRequest la encuentras en el WSDL

http://www.w3schools.com/webservices/tempconvert.asmx

Espero te sirva

Saludos.

Etiquetas: dll, service
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 03:14.