none
Webservice (SOAP) funciona en SOAPUI pero no en mi código VB RRS feed

  • Pregunta

  • Buenos días, hace años que no pasaba por estos lugares, pero necesito algún feedback sobre este problema que me está sucediendo.

    Actualmente estamos usando un webservice de un proveedor externo que recibe distintos tipos de parámetros en base a una clase general. El problema ocurre cuando quiero llamar a un método del webservice y este no funciona (La respuesta del ws será true si se realizó el registro correctamente, de lo contrario será false junto con una rpta de error). El caso es que el ws solo devuelve false sin ningún mensaje de error. 

    Para descartar cualquier tipo de caso, realice la prueba de un XML en el SOAP UI con los mismos parámetros y me dí con la sorpresa que en esta herramienta funciona sin problemas. Cabe resaltar que el método del webservice funciona para otros tipos de prueba, lo cuál explicaré a continuación:

    Cuando no mando este tag al XML, el ws funciona y se registra de forma satisfactoria (En mi código vb):

    <DescuentoCargoDetalle>
      <ENDescuentoCargoDetalle>
         <CodigoAplicado>00</CodigoAplicado>
         <Descripcion>DESCUENTO PROMOCIONAL</Descripcion>
         <IdComprobanteDetalle>0</IdComprobanteDetalle>
         <IdDescuentoCargoCabecera>0</IdDescuentoCargoCabecera>
         <Indicador>0</Indicador>
         <Monto>26.78</Monto>
         <MontoBase>267.78</MontoBase>
         <Porcentaje>10</Porcentaje>
      </ENDescuentoCargoDetalle>
    </DescuentoCargoDetalle>

    En el SOAP UI tiene la misma estructura y ahí si funciona:

                         <lib:DescuentoCargoDetalle>
                            <!--Zero or more repetitions:-->
                            <lib:ENDescuentoCargoDetalle>
                               <!--Optional:-->
                               <lib:CodigoAplicado>00</lib:CodigoAplicado>
                               <!--Optional:-->
                               <lib:Descripcion>DESCUENTO PROMOCIONAL</lib:Descripcion>
                               <!--Optional:-->
                               <lib:IdComprobanteDetalle>0</lib:IdComprobanteDetalle>
                               <!--Optional:-->
                               <lib:IdDescuentoCargoCabecera>0</lib:IdDescuentoCargoCabecera>
                               <!--Optional:-->
                               <lib:Indicador>0</lib:Indicador>
                               <!--Optional:-->
                               <lib:Monto>26.78</lib:Monto>
                               <!--Optional:-->
                               <lib:MontoBase>267.78</lib:MontoBase>
                               <!--Optional:-->
                               <lib:Porcentaje>10</lib:Porcentaje>
                            </lib:ENDescuentoCargoDetalle>
                         </lib:DescuentoCargoDetalle>

    Quisiera saber si a alguien le pasó alguna vez este problema, estuve buscando soluciones en otros lugares y ya realicé las sgtes configuraciones:

    - useDefaultWebProxy="false" 
    - Verificar el visor de eventos de windows (no hay registro de errores).
    - Por algún motivo, al usar wireshark o Fiddler, no capta la llamada al webservice. (Para verificar si existe un error más a detalle).

    Estaré atentos a sus respuesta y se agradece la ayuda.

    Saludos.
    PD: Para ayudarles más, les podría pasar el enlace del wsdl y los parámetros de input que uso, pero prefiero que esto sea por interno.


    martes, 8 de enero de 2019 13:33

Respuestas

  • Hola Leandro:

    Claro que sí, eso es lo que hago, pero para hacer la comparación uso XML porque es más rápido.

    En la clase woENGeneral es que hago la carga de la información, para este caso la subclase ENDescuentoCargoDetalle; al no utilizarla, se registra de forma correcta, pero al incluirla no registra.

    Esta prueba lo realizo en el SOAP UI y si registra...

    Saludos.

    martes, 8 de enero de 2019 14:06

Todas las respuestas

  • hola

    >>El problema ocurre cuando quiero llamar a un método del webservice y este no funciona

    si es un servicio que expone un wsdl podrias usar la Web Reference para crear el codigo del proxy he invocarlo directo

     Creating a Proxy Reference By Using Visual Studio

    es mas simple que crear el xml soap con codigo

    saludos


    Leandro Tuttini

    Blog
    MVP Profile
    Buenos Aires
    Argentina


    martes, 8 de enero de 2019 13:42
  • Hola Leandro:

    Claro que sí, eso es lo que hago, pero para hacer la comparación uso XML porque es más rápido.

    En la clase woENGeneral es que hago la carga de la información, para este caso la subclase ENDescuentoCargoDetalle; al no utilizarla, se registra de forma correcta, pero al incluirla no registra.

    Esta prueba lo realizo en el SOAP UI y si registra...

    Saludos.

    martes, 8 de enero de 2019 14:06