none
ayuda mi web service no funciona RRS feed

  • Pregunta

  • Hola, necesito ayuda , no se mucho de esto( o casi nada), pero necesito hacer que esto funcione. Cree un web service  y con mi método para consumirlo funciona, pero cuando el cliente lo hace con el suyo no va, y tiene que ir con el método del cliente y ya no se como hacerlo, lo he simplificado al máximo para exponerlo aquí. Se que será una tontería como siempre me pasa, pero agradecería poder solucionarlo ya. Gracias como siempre .

    Como no se como poner aquí el proyecto voy a poner el código de cada cosa:

    web service :

    namespace WcfService2
    {
        // NOTA: puede usar el comando "Rename" del menú "Refactorizar" para cambiar el nombre de clase "Service1" en el código, en svc y en el archivo de configuración.
        // NOTE: para iniciar el Cliente de prueba WCF para probar este servicio, seleccione Service1.svc o Service1.svc.cs en el Explorador de soluciones e inicie la depuración.
        public class Service2 : IService2
        {
            public referencia obt_referencia(string identificacion)
            {
                if (identificacion == "")
                {
                    return new WcfService2.referencia() { dev_referencia = "Vacio" };
                }
                else
                {
                    return new WcfService2.referencia() { dev_referencia = identificacion  };
                }
            }

        }
    }

    tipo de consumo (mio):

                string xmlenvio = "<soapenv:Envelope xmlns:soapenv=\"http://schemas.xmlsoap.org/soap/envelope/\"><soapenv:Header /><soapenv:Body><ObtenerOfertas><Oferta><IdOferta>177988</IdOferta><IdFabricante>36</IdFabricante><Bastidor>WF0DXXGAKDFC05885</Bastidor><IdTaller>56877</IdTaller><CifTaller>E07772221</CifTaller><CpTaller>28280</CpTaller><IdDistribuidor>461</IdDistribuidor><LineaOferta><IdLineaOferta>993448</IdLineaOferta><ReferenciaOem>1814802</ReferenciaOem><ReferenciaIam /><IdMarcaIam /><TipoRecambio>3</TipoRecambio><Unidades>0</Unidades></LineaOferta></Oferta></ObtenerOfertas></soapenv:Body></soapenv:Envelope>";
                using (obt_referencia.Service2Client cliente = new obt_referencia.Service2Client())
                {
                    var obt_ref = cliente.obt_referencia(xmlenvio);

                    this.textBox3.Text = obt_ref.dev_referencia;
                }

    tipo dos  (cliente final, no funciona):

     {
                string url = "http://localhost:2446/Service2.svc";
                string actionObtenerOfertas = "miservicio";
                string xmlObtenerOfertas = "<soapenv:Envelope xmlns:soapenv=\"http://schemas.xmlsoap.org/soap/envelope/\"><soapenv:Header /><soapenv:Body><ObtenerOfertas><Oferta><IdOferta>177988</IdOferta><IdFabricante>36</IdFabricante><Bastidor>WF0DXXGAKDFC05885</Bastidor><IdTaller>56877</IdTaller><CifTaller>E07772221</CifTaller><CpTaller>28280</CpTaller><IdDistribuidor>461</IdDistribuidor><LineaOferta><IdLineaOferta>993448</IdLineaOferta><ReferenciaOem>1814802</ReferenciaOem><ReferenciaIam /><IdMarcaIam /><TipoRecambio>3</TipoRecambio><Unidades>0</Unidades></LineaOferta></Oferta></ObtenerOfertas></soapenv:Body></soapenv:Envelope>";

                XmlDocument xmlResultObtenerOfertas = CallWebServiceSoapAction(url, actionObtenerOfertas, xmlObtenerOfertas);

              
            }

            public static XmlDocument CallWebServiceSoapAction(string url, string soapAction, string xmlInput)
            {
                //System.Net.WebResponse response = null;
                XmlDocument xmlResult = new XmlDocument();
                StreamWriter writer = null;
                try
                {
                    //Create Request
                    WebRequest request = WebRequest.Create(url);
                    request.Headers.Add("SOAPAction", soapAction);
                    request.Method = "POST";
                    request.ContentType = "text/xml";
                    writer = new StreamWriter(request.GetRequestStream());
                    writer.WriteLine(xmlInput);
                    writer.Close();
                    //Get Response
                    using (var response = (WebResponse)request.GetResponse())

                    {
                        using (Stream strReader = response.GetResponseStream())
                        {
                            xmlResult.Load(strReader);
                        }
                    }
                }
                catch (WebException ex)
                {
                    if (ex.Status == WebExceptionStatus.ProtocolError)
                    {
                        string error = new System.IO.StreamReader(ex.Response.GetResponseStream()).ReadToEnd();
                    }
                    throw;
                }
                return xmlResult;
            }
        

    martes, 20 de noviembre de 2018 9:51

Todas las respuestas

  • Buenas,

    Que error te da en el cliente? Podrías indicarnos el error que te da en la linea que te da?

    Pregunto esto porque pueden ser muchas cosas... un error de enrutado, firewalls, el propio codigo (aunque si en tu sistema en local funciona, no deberías tener problemas en remoto, al menos para conectarte)

    Atte


    Jorge Turrado Ferrero

    Mis repositorios en GitHub

    Mi Blog


    Ranking GitHub Euskadi
    Ranking GitHub Alava

    No olvides votar mi comentario si te ha ayudado y marcarlo como respuesta si ha sido la solución, con eso ayudas a mejorar mi reputación en la comunidad y a identificar la respuesta a la gente que tenga el mismo problema.


    martes, 20 de noviembre de 2018 13:46
  • hola, el error que me da en mi entorno de trabajo es este :

    System.Net.WebException: 'Error en el servidor remoto: (500) Error interno del servidor.'

    las dos formas las estoy ejecutando en local, el error es el mismo en local que en remoto.

    No se como poner el proyecto aquí entero, si se puede o se lo mando por email no tengo problemas por hacerlo.

    Lo que quiero es solucionarlo lo mas pronto posible, gracias

    miércoles, 21 de noviembre de 2018 11:42
  • Hola, ese error te lo devuelve el servicio qué estás llamando? 

    tanto de aqui

    var obt_ref = cliente.obt_referencia(xmlenvio);

    como de aqui

     

    XmlDocument xmlResultObtenerOfertas = CallWebServiceSoapAction(url, actionObtenerOfertas, xmlObtenerOfertas);
    Si fuera así el PROBLEMA se encuentra en una primera instancia en el servicio externo. Es un servicio de terceros? Es  tuyo? Saludos


    Si se solucionó tu consulta no olvides marcar la respuesta. Si te ayudó, vótala como útil. Saludos

    miércoles, 21 de noviembre de 2018 11:53
  • hola, no , solo me lo da el segundo método. El primero va bien. gracias

    Y lo dicho, esto esta en mi maquina local, no hay servidor de por medio, solo el que abre el entorno de trabajo.

    miércoles, 21 de noviembre de 2018 12:02