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

Cliente .Net para Servicio SOAP return Nothing

Estas en el tema de Cliente .Net para Servicio SOAP return Nothing en el foro de ASPX (.net) en Foros del Web. 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 ...
  #1 (permalink)  
Antiguo 20/06/2011, 02:50
Avatar de moNTeZIon  
Fecha de Ingreso: enero-2005
Ubicación: Lliçà de Munt - BCN
Mensajes: 1.625
Antigüedad: 19 años, 3 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 ::..
  #2 (permalink)  
Antiguo 14/01/2012, 12:55
 
Fecha de Ingreso: enero-2012
Mensajes: 1
Antigüedad: 12 años, 3 meses
Puntos: 0
Respuesta: Cliente .Net para Servicio SOAP return Nothing

Buenas,

Primero de todo... no se si has podido solucionar este asunto, ya hace un tiempo...

A mi me pasa un problema muy parecido... en mi caso la respuesta viene con un namespace para la llamada y otro para la respuesta, como se puede ver en el ejemplo.


<soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/">
<soapenv:Body>
<ns1:HotelSearchResponse xmlns:ns1="http://www.wso2.org/php" xmlns:ns2=" ">
<return>
<ns2:body>
<ns2:ProductCode>BKLHBWARNA</ns2:ProductCode>


Creia que el hecho de no obtener resultados se debía precisamente a este hecho, y que de alguna forma tenia que indicar el namespace de la respuesta.

Yo he intentado hacerlo medinate el atributo "Namespace" del objeto binding del cliente (conexión), igualandolo a "ns2" pero nada... la respuesta viene con body=Nothing...

Si lo has podido solucionar ya me diras algo, sinó intenta igualar este parametro a "" pues por defecto viene con valor "http://tempuri.org/", como se indica en: [URL="http://msdn.microsoft.com/en-us/library/system.servicemodel.channels.binding.namespace.asp x"]enlace[/URL]

Seguiré investigando... que remedio... si encuentro la solución te aviso.

Suerte!

Etiquetas: cliente, net, return, servicio, soap, aspx
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 13:23.