{"id":11851,"date":"2012-02-08T05:00:00","date_gmt":"2012-02-08T08:00:00","guid":{"rendered":"http:\/\/fx2.com.uy\/site\/extensiones-xslt-datapower-funcion-dpsoap-call\/"},"modified":"2012-02-08T05:00:00","modified_gmt":"2012-02-08T08:00:00","slug":"extensiones-xslt-datapower-funcion-dpsoap-call","status":"publish","type":"post","link":"https:\/\/fx2.com.uy\/es\/noticias\/extensiones-xslt-datapower-funcion-dpsoap-call\/","title":{"rendered":"Extensiones XSLT &#8211; Datapower &#8211; Funci\u00f3n dp:soap-call"},"content":{"rendered":"<p style=\"text-align:justify;\">Como se ha comentado previamente en este post, existe una gran variedad de extensiones de XSLT provistas para utilizar sobre el appliance Datapower.<\/p>\n<p style=\"text-align:justify;\">\nEn este post se analizar\u00e1n las posibilidades de la funci\u00f3n dp:soap-call ( teniendo en cuenta que previamente se ha hecho la declaraci\u00f3n del namespace correspondiente a xmlns:dp=http:\/\/www.datapower.com\/extensions).<\/p>\n<p style=\"text-align:justify;\">\nLa funci\u00f3n dp:soap-call permite hacer una llamada a un servicio (post) enviando un mensaje XML y recibir la respuesta correspondiente.<\/p>\n<p><!--more--><\/p>\n<p style=\"text-align:justify;\">\n<p>En este link se puede tener una documentaci\u00f3n detallada de cada par\u00e1metro utilizado en la llamada.<\/p>\n<p style=\"text-align:justify;\">\nPara poder hacer la llamada se va requerir el mensaje XML de request.<\/p>\n<p style=\"text-align:justify;\">\nLa sintaxis completa ser\u00eda la siguiente:<br ><\/p>\n<p>dp:soap-call(URL, message, SSL-Proxy-Profile, flags, SOAP-action, HTTP-headers, process-faults, timeout)<\/p>\n<p style=\"text-align:justify;\">\n<p>La URL refiere a la URL del servicio que se desea invocar.<\/p>\n<p style=\"text-align:justify;\">\nEl mensaje es el mensaje SOAP que se requiere para realizar la llamada.<\/p>\n<p style=\"text-align:justify;\">\nUn posible ejemplo ser\u00eda:<\/p>\n<p style=\"text-align:justify;\">\n<p>&lt;xsl:variable name=&#8221;message&#8221;&gt;<\/p>\n<p>&lt;soapenv:Envelope xmlns:soapenv=&#8221;http:\/\/schemas.xmlsoap.org\/soap\/envelope\/&#8221; xmlns:ws=&#8221;http:\/\/ws.seguridad.dgi.gub.uy&#8221;&gt;<\/p>\n<p>&lt;soapenv:Header\/&gt;<\/p>\n<p>&lt;soapenv:Body&gt;<\/p>\n<p>&lt;ws:NombreMetodo&gt;<\/p>\n<p>&lt;ws:param1&gt;valor de pr\u00e1metro&lt;\/ws:param1&gt;<\/p>\n<p>&lt;ws:param2&gt; valor de pr\u00e1metro &lt;\/ws:param2&gt;<\/p>\n<p>\u2026\u2026<\/p>\n<p>&lt;ws:paramX&gt; valor de pr\u00e1metro &lt;\/ws:paramX&gt;<\/p>\n<p>&lt;\/ws:NombreMetodo &gt;<\/p>\n<p>&lt;\/soapenv:Body&gt;<\/p>\n<p>&lt;\/soapenv:Envelope&gt;<\/p>\n<p>&lt;\/xsl:variable&gt;<\/p>\n<p style=\"text-align:justify;\">\n<p>Notar que este mensaje es id\u00e9ntico a lo que se usar\u00eda en SoapUI para hacer la llamada al servicio.<\/p>\n<p style=\"text-align:justify;\">\nLos dem\u00e1s par\u00e1metros se pueden obviar si no son explicitamente requeridos.\n<\/p>\n<p style=\"text-align:justify;\">\n<p>Ejemplo de llamada:<\/p>\n<p style=\"text-align:justify;\">\n<p>&lt;xsl:variable name=&#8221;result&#8221; select=&#8217;dp:soap-call(&#8220;http:\/\/&#8230;.&#8221;, $message)&#8217;\/&gt;<\/p>\n<p>En la variable $result se guarda el resultado, un XML por tanto debe tratarse como tal.<\/p>\n<p>\nPor ejemplo si el resultado esperado es un dato de tipo b\u00e1sico se debe extraer con el XPath correcto<\/p>\n<p>&lt;xsl:variable name=&#8221;respuestaDato&#8221; select=&#8221;$result\/\/*[namespace-uri()=&#8217;uri-servicio&#8217; and local-name()=&#8217;nombreObjetoRetorno&#8217;]\/text()&#8221;\/&gt;<\/p>\n<p>El uso de esta funci\u00f3n permite llamar a servicios externos desde una plantilla XSLT en cualquier contexto de servicios de Datapower (Web Service Proxy, XML Firewall, Multi-protocolo Gateway, etc\u2026)<\/p>\n","protected":false},"excerpt":{"rendered":"<p>Como se ha comentado previamente en este post, existe una gran variedad de extensiones de XSLT provistas para utilizar sobre el appliance Datapower. En este post se analizar\u00e1n las posibilidades de la funci\u00f3n dp:soap-call ( teniendo en cuenta que previamente se ha hecho la declaraci\u00f3n del namespace correspondiente a xmlns:dp=http:\/\/www.datapower.com\/extensions). La funci\u00f3n dp:soap-call permite hacer [&hellip;]<\/p>\n","protected":false},"author":4,"featured_media":0,"comment_status":"closed","ping_status":"open","sticky":false,"template":"","format":"standard","meta":[],"categories":[62],"tags":[],"_links":{"self":[{"href":"https:\/\/fx2.com.uy\/es\/wp-json\/wp\/v2\/posts\/11851"}],"collection":[{"href":"https:\/\/fx2.com.uy\/es\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/fx2.com.uy\/es\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/fx2.com.uy\/es\/wp-json\/wp\/v2\/users\/4"}],"replies":[{"embeddable":true,"href":"https:\/\/fx2.com.uy\/es\/wp-json\/wp\/v2\/comments?post=11851"}],"version-history":[{"count":0,"href":"https:\/\/fx2.com.uy\/es\/wp-json\/wp\/v2\/posts\/11851\/revisions"}],"wp:attachment":[{"href":"https:\/\/fx2.com.uy\/es\/wp-json\/wp\/v2\/media?parent=11851"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/fx2.com.uy\/es\/wp-json\/wp\/v2\/categories?post=11851"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/fx2.com.uy\/es\/wp-json\/wp\/v2\/tags?post=11851"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}