我正在尝试使用Zeep与SOAP Web服务进行交互。
Zeep生成的安全标头似乎类似于Web服务的文档,但是我注意到与文档相比,几个节点(例如Signature
)缺少di:
前缀。
这是我的代码:
import xmlsec
from zeep import Client
from zeep.plugins import HistoryPlugin
from zeep.wsse import BinarySignature
import logging.config
logging.config.dictConfig({
'version': 1,
'formatters': {
'verbose': {
'format': '%(name)s: %(message)s'
}
},
'handlers': {
'console': {
'level': 'DEBUG',
'class': 'logging.StreamHandler',
'formatter': 'verbose',
},
},
'loggers': {
'zeep.transports': {
'level': 'DEBUG',
'propagate': True,
'handlers': ['console'],
},
}
})
history = HistoryPlugin()
client = Client("https://xxxxx/xxx.wsdl", plugins=[history],
wsse=BinarySignature(
'key.pem', 'cert.pem',
'xxxxxx'))
client.set_ns_prefix("ns2", "http://www.xxxxx/webservice")
client.service.matcherTwo(ondernemingsNummer="xxxxx",
dog=dict(naam="xxx", cat="xxx", dateOfBirth="2012-09-10"),
referenceDate="2016-02-16+01:00")
如果有人能给我指出我做错了的事情,那就太好了。