Как извлечь SOAP-ответ, используя pysimplesoap?
Я новичок в использовании pysimplesoap. Я успешно использую pysimplesoap для генерации запроса мыла на SOAP-сервер, и мыльный сервер отвечает правильно, однако я не знаю, как извлечь возвращенную информацию.
Это мой код на pysimplesoap по запросу
> from pysimplesoap.client import SoapClient
> client = SoapClient(location="http://192.168.206.111:8998/axis2/services/SecurityService", action="", namespace="http://www.labtest.com/Security", ns="ns3")
> response = client.call("login", ("ns3:loginName", "administrator"), ("ns3:password", "admin"))
Ответ SOAP представлен в следующем формате.
<soapenv:Envelope
xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/">
<soapenv:Body>
<n:loginResponse
xmlns:n="http://www.labtest.com/Security"
xmlns:n0="http://www.labtest.com/Types">
<n:errorCode>
<n0:hasError>
false
</n0:hasError>
<n0:status>
STATUS_SUCCESS
</n0:status>
</n:errorCode>
<n:authorizationToken>
<n0:token>
6430303938366138316265646532313138623866353235343030346130653330
</n0:token>
<n0:securityPrivileges>
<n0:values>
<n0:securityAttribute>
SUPER_USER_ACCESS
</n0:securityAttribute>
<n0:accessRights>
<n0:values>
FULL_CONTROL
</n0:values>
</n0:accessRights>
</n0:values>
</n0:securityPrivileges>
</n:authorizationToken>
</n:loginResponse>
</soapenv:Body>
</soapenv:Envelope>
Я пытался использовать ответ печати или печать (ответ), но ничего не показывалось.
1 ответ
response
Объект является pysimplesoap.client.SimpleXMLElement.
За капотом print(response)
назову его __str__()
метод, выбор был сделан, для pysimplesoap, что `__str__()
возвращает текстовое содержимое узла (если есть), если ваш узел не содержит текстового содержимого, например:
<MySoapResponse>
<child tag attr="value />
</MySoapResponse>
… затем, __str__()
ничего не вернет, как и печать.
В качестве альтернативы, вы можете захотеть
- перемещайтесь по дереву XML вашего ответа, используя методы SimpleXMLElement:
children()
захватить детский списокtag['attr']
(диктовая запись) для доступа к атрибутам тега XMLtag.get_name()
получить имя тега;
- проверить полный ответ в виде строки (включая заголовки Soap) как вызов строки
repr(response)
, но это больше для целей отладки.
Смотрите также основную документацию клиента онлайн.