1

我是使用 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>

我尝试使用打印响应或打印(响应),但没有任何显示。

4

1 回答 1

2

response对象是一个pysimplesoap.client.SimpleXMLElement

在幕后,如果您的节点不包含文本内容,则 aprint(response)将调用其方法,对于返回节点文本内容(如果有)的__str__()pysimplesoap 已做出选择,例如:`__str__()

<MySoapResponse>
    <child tag attr="value />
</MySoapResponse>

......然后,__str__()将不返回任何内容,打印也是如此。

或者,您可能想要

  • 使用 SimpleXMLElement 方法 浏览答案的 XML 树:
    • children()抢儿童清单
    • tag['attr'](dict 表示法)访问 XML 标记的属性
    • tag.get_name()获取标签名称;
  • 将完整答案作为字符串(包括 Soap 标头)作为字符串调用检查repr(response),但更多的是用于调试目的。

另请参阅在线基本客户端文档

于 2013-11-20T08:57:53.367 回答