Power Builder - Envío de array como parametro al llamar a un Serivcio Web SOAP desde Power Builder

 
Vista:

Envío de array como parametro al llamar a un Serivcio Web SOAP desde Power Builder

Publicado por Ezequiel (3 intervenciones) el 30/10/2018 19:05:30
Hola a todos, estoy teniendo un problema al llamar a un servicio web desde Power Builder.

Resulta que el Servicio Web fue desarrollado para enviar mails y al llamarlo hay que pasarle entre otras cosas el mail de origen, el de destino, el asunto, el cuerpo del mensaje, etc.

Todo eso funciona bien, pero a la hora de agregar adjuntos, la estructura de adjuntos es un array de tipo attachment (Estructura definida en el servicio web que estoy llamando).

Yo creo estructura principal del request, con el asunto, origen, destino, cuerpo, etc, y le uno la estructura de attachements.

Al mirar el log de lo que se envió al servicio veo algo como esto:

REQUEST:
CLOSED
POST /WS_Comunicacion/Comunicacion.svc?WSDL HTTP/1.1
Host: 192.168.10.60
Connection: Keep-Alive
User-Agent: EasySoap++/0.6
Content-Type: text/xml; charset=utf-8
SOAPAction: "http://tempuri.org/IComunicacion/send_message"
Content-Length: 26539

<E:Envelope
xmlns:E="http://schemas.xmlsoap.org/soap/envelope/"
xmlns:A="http://schemas.xmlsoap.org/soap/encoding/"
xmlns:s="http://www.w3.org/2001/XMLSchema-instance"
xmlns:y="http://www.w3.org/2001/XMLSchema"
E:encodingStyle="http://schemas.xmlsoap.org/soap/encoding/">
<E:Body>
<m:send_message xmlns:m="http://tempuri.org/">
<m:message_data s:type="ns1:MessageSendingRequest" xmlns:ns1="http://schemas.datacontract.org/2004/07/WS_Comunicacion">

<ns1:attachments>
<MessageAttachment s:type="ns1:MessageAttachment">
<ns1:file s:type="y:string">Archivo adjunto en Base64</ns1:file>
<ns1:name s:type="y:string">Nombre_archivo.pdf</ns1:name>
</MessageAttachment>
</ns1:attachments>
<ns1:channel s:type="y:string">XXX</ns1:channel>
<ns1:message_content s:type="ns1:MessageContentContract">
<ns1:from s:type="y:string">[email protected]</ns1:from>
<ns1:to s:type="y:string">[email protected]</ns1:to>
<ns1:subject s:type="y:string">Asunto</ns1:subject>
<ns1:body s:type="y:string">Cuerpo del mensaje</ns1:body>
<ns1:body_params s:type="y:string"></ns1:body_params>
</ns1:message_content>
<ns1:mode s:type="y:string">XXXX</ns1:mode>
<ns1:origin s:type="y:string">XXXX</ns1:origin>
<ns1:redirect_url s:type="y:string"></ns1:redirect_url>

</m:message_data>
</m:send_message>
</E:Body>
</E:Envelope>

El problema está en los tags marcados en negrita: MessageAttachment. Esos se generan automaticamente al llamar al servicio, pero no se les pone el prefijo "ns1:". Por lo cual el servicio detecta que ese tag no existe y lo omite. Y los adjuntos nunca llegan.

Revisé todas las documentaciones de PowerBuilder pero nadie explica esa parte.

Alguien paso por algo similar? Saben como se puede forzar a que un TAG auto generado al llamar al servicio tenga prefijo?

Desde ya muchas gracias por la ayuda.

Saludos.
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder

Envío de array como parametro al llamar a un Serivcio Web SOAP desde Power Builder

Publicado por Ezequiel (3 intervenciones) el 22/01/2019 15:36:48
Aparentemente era una limitacion de EasySoap. Asi que tuve que cambiar la forma en que creo el cliente PB que llama al servicio en .Net diciendole que use el .Net Engine.

De esa forma me permitió mandar un array como parametro al llamar a un Serivcio Web SOAP desde Power Builder.

Espero que a alguien mas le sirva esta info.

Saludos.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar