Unterstützen Sie SOAP MTOM/XOP-Nachrichten mit Jitterbit Integration Studio
Einführung
Dieses Entwurfsmuster richtet den SOAP Dienst ein Mechanismus zur Optimierung der Nachrichtenübertragung (MTOM) mit XML-binär optimierter Verpackung (XOP)-Unterstützung mithilfe des HTTP-Connectors.
Wichtig
Der SOAP Konnektor unterstützt diese Funktion nicht. Der HTTP-Connector dient als Workaround.
Entwurfsmuster und Beispiel
Diese beispielhafte Operation dient zur Veranschaulichung des Entwurfsmusters, dessen Hauptmerkmale im Folgenden beschrieben werden:
-
(Optional) Der Operation „SOAP -Anforderung erstellen“ wendet SOAP -Anforderungsheader (wie etwa einen OASIS-WSS- Header) nach Bedarf davorlegende dem Operation mit einem Script an:
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>
Wenn diese Header nicht erforderlich sind, kann der SOAP Anforderungstext definiert und direkt in der POST SOAP Anforderung verwendet werden.
-
Die Operation POST SOAP Request führt die eigentliche SOAP Anfrage und das XOP-Parsing durch. Sie erfordert Folgendes:
- Eine konfigurierte HTTP-Verbindung. Die Basis URL der Verbindung sollte auf den gewünschten SOAP Dienst verweisen. Beispiel:
http://schemas.example.com/service.svc
. Weitere Felder sind nicht erforderlich. -
Eine HTTP-POST-Aktivität. Es sollte zwei Anfrageheader enthalten:
Content-Type
:text/xml; charset="utf-8"
SOAPAction
:"http://schemas.example.com/service/action"
-
Anforderungs- und Antwortvariablen für die Arbeit mit Ihren Nutzdaten (
soap_request_body
Undsoap_response
). -
Ein Script, das die XOP- Payload zum Parsen nach Bedarf aufteilt:
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>
Wichtig
Die
Split
Funktionsaufrufe im obigen Beispiel treffen möglicherweise nicht auf Ihren Anwendungsfall zu. Wenden Sie Analyseregeln basierend auf dem aufgerufenen Webdienst an.
- Eine konfigurierte HTTP-Verbindung. Die Basis URL der Verbindung sollte auf den gewünschten SOAP Dienst verweisen. Beispiel:
-
Der Operation „SOAP -Antwort analysieren“ transformiert den Antwort-XOP, um Ihren Anwendungsfall weiter zu unterstützen.