En este grupo En todos

Foro de PowerBuilder



Conectarme a un Web Service de SAP con PB 11

Cesar
Distrito Federal, Mé...
Escrito por Cesar Martinez
el 05/04/2010

Hola a todos como estas, estoy realizando un consumo de Web Service de SAP, pero me genera un errror los consultores de SAP dicen que no esta llegando el Xml como debe de ser les muestro un ejemplo de como lo envia Power builder

Asi lo envia power :

<E:Envelope
xmlns:E=" https://schemas.xmlsoap.org/soap/envelope/ "
xmlns:A=" https://schemas.xmlsoap.org/soap/encoding/ "
xmlns:s=" https://www.w3.org/2001/XMLSchema-instance "
xmlns:y=" https://www.w3.org/2001/XMLSchema "
E:encodingStyle=" https://schemas.xmlsoap.org/soap/encoding/ ">
<E:Body>
<mt_CreaMaterial
s:type="ns1:dt_CreaMaterial"
xmlns:ns1="urn:relsa. Com:TS_MM_CreaMaterial">
<ClvMat_NumParte
s:type="y:string">PRUEBA3</ClvMat_NumParte>
<Taller
s:type="y:string">RT01</Taller>
<Tipo_Medida
s:type="y:string">L</Tipo_Medida>
<Texto_Material
s:type="y:string">FACIA</Texto_Material>
</mt_CreaMaterial>
</E:Body>
</E:Envelope>


Y SAP solicita que llegue asi:

<? Xml version="1. 0" encoding="UTF-8" standalone="yes"? ><! -- Request Message Mapping --> <mt_CreaMaterial xmlns:A='https://schemas.xmlsoap.org/soap/encoding/' xmlns:ns1='urn:relsa. Com:TS_MM_CreaMaterial' xmlns:s='https://www.w3.org/2001/XMLSchema-instance' xmlns:E='https://schemas.xmlsoap.org/soap/envelope/' xmlns:y='https://www.w3.org/2001/XMLSchema' s:type='ns1:dt_CreaMaterial'>

<ClvMat_NumParte s:type='y:string'>PRUEBA3</ClvMat_NumParte>

<Taller s:type='y:string'>RT01</Taller>

<Tipo_Medida s:type='y:string'>L</Tipo_Medida>

<Texto_Material s:type='y:string'>FACIA</Texto_Material>

</mt_CreaMaterial>


Existe la forma de poder modificar el envio del Xml o alguien que me sugiera algo.



Alexander Escobar
El Salvador, El Salv...
Escrito por Alexander Escobar
el 07/04/2010

Hola

Yo habitualmente la forma en que trabajo con WS, es crear un objeto Proxy con la URL del WS que deseo consumir.

Luego le doy deploy y este me crea una serie de objetos con los cuales yo puedo trabajar con el WS.

Al final todo se utiliza como un objeto que posee todos los metodos del WS "proxy_obj", a continuacion pongo un ejemplo de como declararlos :

======================================

SoapConnection conn // Define SoapConnection
n_ws_try proxy_obj // Declare proxy

Conn = create SoapConnection //Instantiated connection

Conn. CreateInstance(proxy_obj, "n_ws_try") // Create proxy object

Try
// Invoke service
MessageBox("", proxy_obj. Of_hello( ))
CATCH (Throwable t)
MessageBox("Invocation Error", t. GetMessage(), StopSign!)
END TRY

Destroy conn

======================================

Confio que con esto tengas una Luz, en tu codigo.

Saludos Cordiales

Cesar Martinez
Distrito Federal, Mé...
Escrito por Cesar Martinez
el 07/04/2010

Gracias Alexander, y si de hecho lo tengo como tu me mandaste genero el proxy lo compilo, pero sabes mi problema es que me dicen que el xml que envia esta mal, y queria ver si hay alguna forma para modificarlo, antes de que lo envie, no el wsdl sino los datos que envia, de hecho me marca que llega se conecta al servidor y entrega los datos de esta forma

<E:Envelope
xmlns:E=" https://schemas.xmlsoap.org/soap/envelope/ "
xmlns:A=" https://schemas.xmlsoap.org/soap/encoding/ "
xmlns:s=" https://www.w3.org/2001/XMLSchema-instance "
xmlns:y=" https://www.w3.org/2001/XMLSchema "
E:encodingStyle=" https://schemas.xmlsoap.org/soap/encoding/ ">
<E:Body>
<mt_CreaMaterial
s:type="ns1:dt_CreaMaterial"
xmlns:ns1="urn:relsa. Com:TS_MM_CreaMaterial">
<ClvMat_NumParte
s:type="y:string">PRUEBA40</ClvMat_NumParte>
<Taller
s:type="y:string">RT01</Taller>
<Tipo_Medida
s:type="y:string">L</Tipo_Medida>
<Texto_Material
s:type="y:string">FACIA</Texto_Material>
</mt_CreaMaterial>
</E:Body>
</E:Envelope>

y los debe de entregar sin el tipo de dato que esta entre comillado

<? xml version="1. 0" encoding="UTF-8" standalone="yes" ? >

- <! --

-->

- < urn:mt_CreaMaterial xmlns:urn =" urn:relsa. Com:TS_MM_CreaMaterial " xmlns:soapenv =" https://schemas.xmlsoap.org/soap/envelope/ ">

< ClvMat_NumParte > PRUEBA88 </ ClvMat_NumParte >

< Taller > RT01 </ Taller >

< Tipo_Medida > L </ Tipo_Medida >

< Texto_Material > FACIA </ Texto_Material >

</ urn:mt_CreaMaterial >

De este modo Alex no se si tengas algo que me pueda ayudar, por te comento que asi como tu me explicaste ya lo habi hecho pero el problema es al enviar

Cesar

Alexander Escobar
El Salvador, El Salv...
Escrito por Alexander Escobar
el 07/04/2010

Hola

Entre las especificaciones que uno le define al Proxy, uno puede definir si va ser en formato SOAP o XML-RPC... Segun recuerdo existen otros 3 formatos mas... Y estos pueden ser configurados en PB.

Quisa por hay va la cuestion.

Saludos Cordiales.