miércoles, junio 27, 2012

XML en CDATA


Es común encontrarse con interfaces que se comunican mediante mensajes XML en un campo de texto. Esto suele complicar la definición del escenario, requiriendo de mapeos externos mediante JAVA o XSLT.

A continuación muestro una propuesta, que considero sencilla desde mi punto de vista, para abordar este tipo de escenarios.

Partimos del siguiente mensaje de petición:

SOAPaction: http://ejemplo.es/ws/accionSOAPx

<?xml version="1.0" encoding="UTF-8"?>
<ns1:ObtenerDatos
      xmlns:ns1="http://ejemplo.es/appnetws">
<ns1:sToken>
<![CDATA[
<?xml version="1.0" encoding="UTF-8"?>
<TOKEN>
<AppName>APPNAME</AppName>
<AppToken>APPTOKEN</AppToken>
</TOKEN>
]]>
</ns1:sToken>
</ns1:ObtenerDatos>

jueves, junio 21, 2012

Incluir SOAPaction en mensaje

Una manera de indicar la acción SOAP del mensaje es mediante la siguiente UDF:

DynamicConfiguration conf = (DynamicConfiguration) container
.getTransformationParameters( )
.get(StreamTransformationConstants.DYNAMIC_CONFIGURATION);


DynamicConfigurationKey key = DynamicConfigurationKey.create( 
"http:/"+"/sap.com/xi/XI/System/SOAP",  
"THeaderSOAPACTION"); 


conf.put(key, action[0]);


result.addValue(action[0]); 

Dicha UDF espera como parámetro de entrada una string llamada "action" que contendrá el valor de la acción que corresponda. El mapeo deberá ir directo contra la cabecera del mensaje destino.