python - 如何使用 Python zeep 从具有多个绑定的 Python Soap 客户端访问所有 Web 服务方法
问题描述
我必须使用来自 SOAP 服务的数据,这对我来说是一项新技术。我使用以下代码从服务器连接:
from requests import Session
from requests.auth import HTTPBasicAuth
from zeep import Client
from zeep.transports import Transport
wsdl= 'my_service.com/MEX?wsdl'
username = 'john_doe'
password = 'password'
session = Session()
session.auth = HTTPBasicAuth(username, password)
transport = Transport(session=session)
client = Client(wsdl=wsdl, transport=transport)
使用 SoapUi 软件并与此服务器连接,我意识到它具有三个绑定,每个绑定都有很多 Web 服务。但是,使用 Python,我只能访问 Web 服务(通过 client.service)进行第一次绑定。我想知道如何从另外两个绑定中访问 Webservice 方法。
OBS:client.wsdl.bindings 返回一个字典,将一些包含在 SoapUI 上看到的绑定名称的 url 映射到 Soap11Binding 实例。
解决方案
默认情况下,Zeep
选择 WSDL 中的第一个绑定。此绑定可通过
client.service
. 要使用特定绑定,您可以使用bind()
客户端对象示例代码中的方法:
service2 = client.bind('SecondService', 'Port12')
service2.someOperation(arg1='abc', arg2=2)
推荐阅读
- performance - 有效地检查 FP 位模式是否为整数。在多种条件下更快地分支一次?
- java - Liferay Maven 服务构建器失败
- javascript - Vuetify 组件 v-text-field 没有获得类
- sql - SQL - 查询结果存储在列中
- docker - 如何退出让 docker 容器运行(在 jenkins 中)
- angular - Angular:Guards Auth Service 未按预期工作
- foreign-keys - Android Room - 依赖表中的 CASCADE 用于 DELETE 并保持不可触摸以进行 INSERT 操作?
- c++ - 警告 C4477“wprintf_s”:格式字符串“%s”需要“wchar_t *”类型的参数
- docker - gitlab-ci 运行 mariadb 服务未设置 MYSQL_ROOT_PASSWORD
- draw - 如何编写一个函数来绘制图片?我使用一些方法。但它需要改进