Как извлечь 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'] (диктовая запись) для доступа к атрибутам тега XML
    • tag.get_name() получить имя тега;
  • проверить полный ответ в виде строки (включая заголовки Soap) как вызов строки repr(response), но это больше для целей отладки.

Смотрите также основную документацию клиента онлайн.

Другие вопросы по тегам