Suporte a mensagens SOAP MTOM/XOP usando o Jitterbit Studio
Introdução
Este padrão de design configura o serviço SOAP Mecanismo de Otimização de Transmissão de Mensagens (MTOM) com suporte a Empacotamento Otimizado em XML-binário (XOP) usando o conector HTTP.
Importante
O conector SOAP não suporta essa funcionalidade. O conector HTTP é usado como uma solução alternativa.
Padrão de design e exemplo
Esta cadeia de operações de exemplo é usada para ilustrar o padrão de design, cujas características principais estão descritas abaixo:

-
(Opcional) A operação Criar Solicitação SOAP aplica cabeçalhos de solicitação SOAP (como um cabeçalho OASIS WSS) conforme necessário antes da operação de solicitação com um script:
Exemplo de script de adição de cabeçalho OASIS WSS:<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>Se esses cabeçalhos não forem necessários, o corpo da solicitação SOAP pode ser definido e usado diretamente na POST Solicitação SOAP.
-
A operação POST Solicitação SOAP realiza a solicitação SOAP real e a análise XOP. Ela requer o seguinte:
- Uma conexão HTTP configurada. A URL base da conexão deve apontar para o serviço SOAP desejado. Por exemplo,
http://schemas.example.com/service.svc. Nen outros campos são necessários. -
Uma atividade HTTP POST. Ela deve conter dois cabeçalhos de solicitação:
Content-Type:text/xml; charset="utf-8"SOAPAction:"http://schemas.example.com/service/action"
-
Variáveis de solicitação e resposta para trabalhar com suas cargas úteis (
soap_request_bodyesoap_response). - Um script que divide a carga útil de resposta XOP para análise conforme necessário:
- Uma conexão HTTP configurada. A URL base da conexão deve apontar para o serviço SOAP desejado. Por exemplo,
<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
As chamadas da função Split no exemplo acima podem não se aplicar ao seu caso de uso. Aplique regras de análise com base no serviço da web que você está chamando.
- A operação Analisar Resposta SOAP transforma a resposta XOP para apoiar ainda mais seu caso de uso.