Suporte a mensagens SOAP MTOM/XOP usando o Jitterbit Integration Studio
Introdução
Este padrão de design configura o serviço SOAP Mecanismo de Otimização de Transmissão de Mensagens (MTOM) com Empacotamento otimizado XML-binário Suporte (XOP) usando o conector HTTP.
Importante
O conector SOAP não oferece suporte a essa funcionalidade. O conector HTTP é usado como solução alternativa.
Padrão de design e exemplo
Esta cadeia de operação de exemplo é usada para ilustrar o padrão de design, cujas principais características sã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 acima na cadeia da operação de solicitação com um script:
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>
Se esses cabeçalhos não forem necessários, o corpo da solicitação SOAP pode ser definido e usado diretamente na Solicitação POST SOAP.
-
A operação POST SOAP Request realiza a solicitação SOAP 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
. Nenhum outro campo é obrigatório. -
Uma atividade HTTP POST. 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 seus payloads (
soap_request_body
esoap_response
). -
Um script que divide a payload do XOP de resposta para análise conforme necessário:
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
O
Split
chamadas de função no exemplo acima podem não se aplicar ao seu caso de uso. Aplique regras de análise com base no serviço web que você está chamando.
- Uma conexão HTTP configurada. A URL base da conexão deve apontar para o serviço SOAP desejado. Por exemplo,
-
A operação Parse SOAP Response transforma o XOP de resposta para dar mais suporte ao seu caso de uso.