Saltar al contenido

Admite mensajes SOAP MTOM/XOP mediante Jitterbit Integration Studio

Introducción

Este patrón de diseño configura el servicio SOAP Mecanismo de optimización de transmisión de mensajes (MTOM) con Empaquetado optimizado de XML binario (XOP) Soporte mediante el conector HTTP.

Importante

El conector SOAP no admite esta funcionalidad. Se utiliza el conector HTTP como solución alternativa.

Patrón de diseño y ejemplo

Esta cadena de operación de ejemplo se utiliza para ilustrar el patrón de diseño, cuyas características clave se describen a continuación:

Ejemplo de flujo de trabajo SOAP MTOM XOP

  1. (Opcional) La operación Crear solicitud SOAP aplica encabezados de solicitud SOAP (como un encabezado OASIS WSS) según sea necesario arriba en la cadena de la operación de solicitud con un secuencia de comandos:

    Example OASIS WSS header addition script:
    <trans>
    WriteToOperationLog('Pre: ' + $soap_request_body);
    $soap_request_body=Replace($soap_request_body, '<?xml version="1.0" encoding="UTF-8"?>','');
    $soap_request_body=Replace($soap_request_body, '<root xmlns="http://www.jitterbit.com/XsdFromWsdl" xmlns:ns="http://schemas.example.com/2025/1/Test/Batch" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">',
        '');
    $soap_request_body=Replace($soap_request_body,'<transaction>','');
    $soap_request_body=Replace($soap_request_body,'<body>','');
    $soap_request_body=Replace($soap_request_body,'</transaction>','');
    $soap_request_body=Replace($soap_request_body,'</body>','');
    $soap_request_body=Replace($soap_request_body,'</root>','');
    $soap_request_body=trim($soap_request_body);
    $soap_request_body='<?xml version="1.0" encoding="UTF-8" standalone="no"?>
    <soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/" xmlns:ns="http://schemas.example.com/2025/1/Test/Batch" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">                  
        <soapenv:Header>
            <wsse:Security xmlns:wsse="http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-wssecurity-secext-1.0.xsd"
                           soapenv:mustUnderstand="1">
                <wsse:UsernameToken xmlns:wsu="http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-wssecurity-utility-1.0.xsd"
                                    wsu:Id='+ $wss.id +'>
                    <wsse:Username>'+ $WSS.User +'</wsse:Username>
                    <wsse:Password Type="http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-username-token-profile-1.0#PasswordText">'+ $WSS.Password +'</wsse:Password>
                </wsse:UsernameToken>
            </wsse:Security>
        </soapenv:Header>
        <soapenv:Body>
      ' + $soap_request_body;
    $soap_request_body = $soap_request_body + '\r\n</soapenv:Body>
    </soapenv:Envelope>';
    WriteToOperationLog('Post: ' + $soap_request_body);
    </trans>
    

    Si estos encabezados no son necesarios, el cuerpo de la solicitud SOAP se puede definir y utilizar en la Solicitud SOAP directamente.

  2. La operación POST Solicitud SOAP realiza la solicitud SOAP y el análisis de XOP. Requiere lo siguiente:

    • Una [conexión HTTP]( configurada/integration-studio/design/connectors/http/http-connection/) la URL base de la conexión debe apuntar al servicio SOAP deseado. Por ejemplo,http://schemas.example.com/service.svc` no se requieren otros campos.
    • Una actividad HTTP POST. Debe contener dos encabezados de solicitud:

      • Content-Type: text/xml; charset="utf-8"
      • SOAPAction: "http://schemas.example.com/service/action"
      • Variables de solicitud y respuesta para trabajar con sus cargas útiles (soap_request_body y soap_response).
    • Un secuencia de comandos que divide la carga útil XOP de respuesta para analizarla según sea necesario:

      Example XOP parsing script:
      <trans>
      parseDelim=Split(trim($soap_response),"\n");
      arrayDelim=parseDelim[1];
      splitArray=Split($soap_response,arrayDelim);
      splitArray=split(splitArray[1],"\n");
      xml=splitArray[4];
      splitXml=split(xml,'<s:Body>');
      Xml=split(splitXml[1],'</s:Body>')[0];
      start='<?xml version="1.0" encoding="UTF-8"?>
      <root xmlns="http://www.jitterbit.com/XsdFromWsdl" xmlns:ns="http://schemas.example.com/2025/1/Test/Batch" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
          <transaction>
              <response>
                  <body>';
      end='</body></response></transaction></root>';
      $soap_response =start+xml+end;
      WriteToOperationLog($soap_response);
      </trans>
      

      Importante

      El Split Las llamadas a funciones del ejemplo anterior podrían no ser aplicables a su caso de uso. Aplique reglas de análisis según el servicio web al que esté llamando.

  3. La operación Parse SOAP Response transforma la respuesta XOP para respaldar aún más su caso de uso.