Ver Mensaje Individual
  #1 (permalink)  
Antiguo 20/06/2011, 02:50
Avatar de moNTeZIon
moNTeZIon
 
Fecha de Ingreso: enero-2005
Ubicación: Lliçà de Munt - BCN
Mensajes: 1.625
Antigüedad: 19 años, 4 meses
Puntos: 9
Cliente .Net para Servicio SOAP return Nothing

Buenos días.
Me encuentro con dificultades para recibir la respuesta de un servicio web.
El servicio está escrito en Python, y el cliente que lo va a consumir lo estoy escribiendo con Visual Basic .Net.
Otros ya están usando este servicio, dato que comento para que quede claro que el problema lo tengo yo escribiendo el cliente, y que el servicio está funcionando bien.

El principal problema es que, aparentemente, no recibo la respuesta del servicio. El objeto devuelto como respuesta a mi llamada es Nothing.
Pero haciendo uso de un programa tipo sniffer para poder capturar el tráfico HTTP, y que funciona muy bien como es Fiddler, puedo comprobar que mi petición es lanzada correctamente, y lo que es más importante, obtiene una respuesta correcta.
Dicho de otro modo, la respuesta del servicio la devuelve correctamente, pero es en mi clase proxy o en el momento de parsear esa respuesta que se da algún error, y por ese motivo devuelve Nothing, en vez de devolver el tipo de objeto que corresponda.

A continuación les dejo la respuesta SOAP recibida, que puedo capturar con Fiddler, por si alguien observa alguna cosa rara:
Código XML:
Ver original
  1. <SOAP-ENV:Envelope
  2.  xmlns:SOAP-ENC="http://schemas.xmlsoap.org/soap/encoding/"
  3.  xmlns:SOAP-ENV="http://schemas.xmlsoap.org/soap/envelope/"
  4.  xmlns:ZSI="http://www.zolera.com/schemas/ZSI/"
  5.  xmlns:xsd="http://www.w3.org/2001/XMLSchema"
  6.  xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
  7.   <SOAP-ENV:Header></SOAP-ENV:Header>
  8.   <SOAP-ENV:Body>
  9.     <libroVendidoResponse SOAP-ENC:arrayType="xsd:anyType[1]" xsi:type="SOAP-ENC:Array">
  10.       <element id="oef5eaf8" xsi:type="xsd:string">http://www.urlprueba.com</element>
  11.     </libroVendidoResponse>
  12.   </SOAP-ENV:Body>
  13. </SOAP-ENV:Envelope>

Por último, comentar que he estado revisando el siguiente enlace: http://www.primordialcode.com/index....rn-null-issue/
Aparentemente, el problema en este caso es que la clase proxy lleva especificado un namespace, y en cambio, la respuesta SOAP especifica ese namespace como una cadena vacía, y por lo tanto no coinciden.
La solución pasa por modificar la clase proxy para que el namespace sea una cadena vacía, igual que la respuesta SOAP, y de ese modo resuelve el problema.

Pero pienso que en mi caso debe ser algo diferente ya que, en la respuesta SOAP, no puedo ver ningún namespace especificado en el método libroVendidoResponse, si no que veo únicamente esto:
Código XML:
Ver original
  1. <libroVendidoResponse SOAP-ENC:arrayType="xsd:anyType[1]" xsi:type="SOAP-ENC:Array">
Y no consigo ver de qué manera puedo modificar mi clase proxy para que deje de devolver objetos Nothing y devuelva los tipos correctos.
Muchas gracias por la ayuda que me puedan brindar.
Saludos.
__________________
..:: moNTeZIon ::..