有人能用soap exportDevice调用从IPControl获取数据吗?在
我就是这么做的。它仍然返回Context ContextId_1428068970573 is null,必须先调用initExportDevice。在
import suds
import logging
def test_ipcontrol():
logging.basicConfig(level=logging.INFO)
logging.getLogger('suds.client').setLevel(logging.DEBUG)
#url="https://ipcontrol.dhl.com/inc-ws/services/Exports?wsdl"
url="http://prgdca-lab-ipcmgr01.dhl.com:8080/inc-ws/services/Exports?wsdl"
client = suds.client.Client(url, username="srv_dnsauto-test", password="jFlri$mbYto3ot9q", timeout=360)
rslt = client.service.initExportDevice(filter="name begins 'czhs0876'")
print client.last_received()
from suds.sax.element import Element
sid = Element('SessionId', ns=('ns1','http://xml.apache.org/axis/session')).setText(client.last_received().getChild('soapenv:Envelope').getChild('soapenv:Header').getChild('ns1:sessionID').getText())
sid.set("SOAP-ENV:mustUnderstand", "0")
sid.set("SOAP-ENV:actor", "http://schemas.xmlsoap.org/soap/actor/next")
sid.set("xsi:type", "soapenc:long")
client.set_options(soapheaders=sid)
rslt2 = client.service.exportDevice(context=rslt)
print rslt2
我不知道你有没有得到这个问题的答案,但我也遇到了同样的问题,经过几天的努力,我刚刚解决了。我不得不从多个地方借用,包括上面你自己的代码,但最后它是有效的。在
一个问题是您需要从}。一旦我把这些东西都准备好了,它就起作用了。下面是一些初始化并执行
client.last_received()
中提取的会话ID丢失。我必须使用在别处找到的MessagePlugin
代码来获取原始XML,然后使用正则表达式来提取会话ID。接下来,我使用了您的大部分代码来构建新的SOAP头,但是使用了'sessionID'
而不是{exportChildBlock()
的基本查询代码。在相关问题 更多 >
编程相关推荐