PAra consumir los webservices de un servidor de Navision desde otro servidor de Navision tenemos que montar una petición httpRequest pasándole un XML bien formado y recuperar la respuesta para saber que es lo que ha ocurrido en el servidor de destino.
Para ello primero declaramos las variables:
Name | DataType | Subtype | Length |
XmlHttpRequest | Automation | 'Microsoft XML, v4.0'.XMLHTTP | |
XmlDoc | Automation | 'Microsoft XML, v4.0'.DOMDocument | |
XmlString | Text | 1024 | |
BTSoap | BigText | ||
BTValores | BigText |
Creamos un BigText y le añadimos la cabecera de la petición:
BTPasado.ADDTEXT('<?xml version="1.0" encoding="utf-8"?>');
BTPasado.ADDTEXT('<soap:Envelope xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/">');
BTPasado.ADDTEXT('<soap:Body>');
BTPasado.ADDTEXT(STRSUBSTNO('<%1 xmlns="urn:microsoft-dynamics-schemas/codeunit/%2">','MiFuncion','MiCodeUnit'));
BTValores.ADDTEXT('<nombre_parametro_que_espera_MiCodeunit_MiFuncion>');
BTValores.ADDTEXT('MI-VALOR');
BTValores.ADDTEXT('</nombre_parametro_que_espera_MiCodeunit_MiFuncion>');
BTPasado.ADDTEXT(STRSUBSTNO('</%1>','MiFuncion'));
BTPasado.ADDTEXT('</soap:Body>');
BTPasado.ADDTEXT('</soap:Envelope>');
Como veis es bien sencillo montar la petición de nuestro httprequest.
Ahora hacemos la llamada:
Name | DataType | Subtype |
XmlDocPasado Automation | 'Microsoft XML, v4.0'.DOMDocument |
IF (ISCLEAR(XmlHttpRequest)) THEN
CREATE(XmlHttpRequest);
XmlHttpRequest.open('POST','http://servidor:7047/DynamicsNAV/WS/empresa/Codeunit/MiCodeunit',FALSE,'DOMINIO\usuario','password');
XmlHttpRequest.setRequestHeader('Host', 'localhost');
XmlHttpRequest.setRequestHeader('Content-Type', 'text/xml; charset=utf-8');
XmlHttpRequest.setRequestHeader('Content-Length', FORMAT(BTPasado.LENGTH));
XmlHttpRequest.setRequestHeader('SOAPAction','MiFuncion');
XmlHttpRequest.send(BTPasado);
XmlDocPasado := XmlHttpRequest.responseXML;
Con esto obtendríamos en XmlDocPasado un XML con el resultado.
No hay comentarios:
Publicar un comentario