我无法在Zeep python客户端中为SOAP API验证用户身份 . 我有两个网址:
1) http://credotrade.stg-tradingcrm.com:8093/mex
- 它指定了wsdl服务 . 我可以用Zeep命令 python -mzeep
调用它来检查所有可用的操作 .
2) https://credotrade.stg-tradingcrm.com:8094/CrmServiceBasic
- 这是一个身份验证网址,提供使用登录名和密码保护的api位置 .
检查这个api的可用工作php客户端我发现SoapClient收到 SoapClient($wsdl, $location, $username, $password)
形式的参数,其中 $wsdl
是第一个url, $location
是第二个, $username
和 $password
是我的用户名和密码 . 继php文档之后
在非WSDL模式下,必须设置location和uri选项,其中location是要将请求发送到的SOAP服务器的URL,uri是SOAP服务的目标名称空间
如果我直接调用wsdl url,我会收到安全错误: zeep.exceptions.Fault: An error occurred when verifying security for the message.
没有任何成功,我试图ctreate新的ServiceProxy对象 . 此外,我试图在wsdl definition的代码似乎指定api位置时立即修改Zeep Client self.wsdl
初始化 .
如何在python中使用非wsdl soap api?我可以使用Zeep编写一个调用非wsdl api的客户端吗?
Update: Php文档似乎具有误导性 . 我在python-zeep github上遇到了问题How to create client with specific endpoints? . 这意味着location url只是一个与非wsdl模式无关的身份验证URL . Zeep的作者建议可以解决authentification url创建新ServiceProxy对象的问题:
service = client.create_service(
'{http://my-target-namespace-here}myBinding',
'http://my-endpoint.com/acceptance/')
谁能解释如何通过 create_service
方法调用验证网址?
1 回答
可以创建能够使用suds调用身份验证URL的soap客户端 .