В контексте веб-сервисов «конверт SOAP» — это термин, используемый для описания структуры сообщения SOAP. Он состоит из внешней оболочки, которая инкапсулирует все сообщение и содержит информацию о содержимом сообщения и о том, как его следует обрабатывать.
Вот некоторые методы, обычно используемые при работе с конвертами SOAP, а также примеры кода на Python:
-
Создание конверта SOAP:
import xml.etree.ElementTree as ET # Create the SOAP envelope soap_env = ET.Element('soapenv:Envelope') soap_env.set('xmlns:soapenv', 'http://schemas.xmlsoap.org/soap/envelope/') # Add a SOAP header (optional) soap_header = ET.SubElement(soap_env, 'soapenv:Header') header_content = ET.SubElement(soap_header, 'headerElement') header_content.text = 'Header Value' # Add a SOAP body soap_body = ET.SubElement(soap_env, 'soapenv:Body') body_content = ET.SubElement(soap_body, 'bodyElement') body_content.text = 'Body Value' # Convert the envelope to a string soap_message = ET.tostring(soap_env) print(soap_message.decode())
-
Разбор конверта SOAP:
import xml.etree.ElementTree as ET # SOAP message string soap_message = ''' <soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/"> <soapenv:Header> <headerElement>Header Value</headerElement> </soapenv:Header> <soapenv:Body> <bodyElement>Body Value</bodyElement> </soapenv:Body> </soapenv:Envelope> ''' # Parse the SOAP envelope soap_env = ET.fromstring(soap_message) # Extract data from the SOAP envelope header_element = soap_env.find('.//headerElement') header_value = header_element.text body_element = soap_env.find('.//bodyElement') body_value = body_element.text print(f"Header: {header_value}") print(f"Body: {body_value}")
-
Изменение конверта SOAP:
import xml.etree.ElementTree as ET # SOAP message string soap_message = ''' <soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/"> <soapenv:Header> <headerElement>Original Header Value</headerElement> </soapenv:Header> <soapenv:Body> <bodyElement>Original Body Value</bodyElement> </soapenv:Body> </soapenv:Envelope> ''' # Parse the SOAP envelope soap_env = ET.fromstring(soap_message) # Modify the header value header_element = soap_env.find('.//headerElement') header_element.text = 'Modified Header Value' # Modify the body value body_element = soap_env.find('.//bodyElement') body_element.text = 'Modified Body Value' # Convert the modified envelope to a string modified_message = ET.tostring(soap_env) print(modified_message.decode())