miércoles, 18 de mayo de 2011

Consumir Web Service / Servicio Web SOAP

Lo que vamos a hacer es realizar una conexión desde Navision a un servicio web de tipo soap.en princpio con este método se deberia de poder llamar a una función con parámetros pero a veces suele ocasionar problemas.

Creamos las siguientes variables de tipo automation.

locautSoapHttpConnector
Automation 'Microsoft Soap Type Library v3.0'.HttpConnector30

locautSoapSerializer
Automation 'Microsoft Soap Type Library v3.0'.SoapSerializer30

locautXmlDoc Automation 'Microsoft XML, v6.0'.DOMDocument



IF ISCLEAR(LocautSoapHttpConnector) THEN
CREATE(LocautSoapHttpConnector);

LocautSoapHttpConnector.Property('ProxyServer','isaserver');
LocautSoapHttpConnector.Property('ProxyPassword','proxypass');
LocautSoapHttpConnector.Property('ProxyUser','username');

LocautSoapHttpConnector.Property('EndPointURL','http://servername:7047/DynamicsNAV/ws/coduenit/');
LocautSoapHttpConnector.Connect;
LocautSoapHttpConnector.Property('SoapAction','http://servername:7047/DynamicsNAV/ws/coduenit/thefunction');
LocautSoapHttpConnector.BeginMessage;

CREATE(LocautSoapSerialize);
LocautSoapSerialize.Init(LocautSoapHttpConnector.InputStream);

LocautSoapSerialize.StartEnvelope('SOAP','STANDARD');
LocautSoapSerialize.StartBody;
LocautSoapSerialize.StartElement(Elemento o nodo);

 LocautSoapSerialize.StartElement('Elemento hijo');
 LocautSoapSerialize.WriteString('Parametro valido');
 LocautSoapSerialize.EndElement;

LocautSoapSerialize.EndElement;
LocautSoapSerialize.EndBody;
LocautSoapSerialize.EndEnvelope;

LocautSoapHttpConnector.EndMessage;

IF ISCLEAR(XMLDOM) THEN
CREATE(XMLDOM);
//Cargar la respuesta del servicio web esta es un fichero xml
XMLDOM.load(LocautSoapHttpConnector.OutputStream);
XMLNode := XMLDOM.selectSingleNode('//valid');

No hay comentarios:

Publicar un comentario