我是使用pysimplesoap的新手。我成功使用pysimplesoap为SOAP服务器生成soap请求,并且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>
我尝试使用打印响应或打印(响应),但没有显示。
答案 0 :(得分:2)
response
对象是 pysimplesoap.client.SimpleXMLElement 。
在幕后,print(response)
将调用其__str__()
方法,已做出选择,pysimplesoap `__str__()
返回节点的文本内容(如果有),如果您的节点不包含文本内容,例如:
<MySoapResponse>
<child tag attr="value />
</MySoapResponse>
...然后,__str__()
将不返回任何内容,打印也是如此。
或者,您可能想要
children()
抓住儿童名单tag['attr']
(dict表示法)访问XML标记的属性tag.get_name()
获取代码名称; repr(response)
,但它更多用于调试目的。