如何通过Zeep从SOAP API的第二个服务获取数据
使用Zeep访问SOAP API的第二个服务
可以按照以下步骤操作:
加载WSDL并查看所有服务
先通过Zeep解析WSDL,列出所有可用的服务和端口,确认第二个目标服务的名称、端口及地址:from zeep import Client # 替换为你的API WSDL路径/URL client = Client('http://your-api-url.wsdl') # 遍历打印所有服务信息 for service in client.wsdl.services.values(): print(f"服务名称: {service.name}") for port in service.ports.values(): print(f" 端口: {port.name}, 地址: {port.binding.address}")绑定目标服务
根据上面获取到的第二个服务的名称、端口,创建对应的服务代理:- 方法一:通过
create_service指定服务的QName和地址# 替换为目标服务的命名空间、服务名称,以及对应的endpoint地址 target_service = client.create_service( '{http://your-api-namespace.com/}TargetServiceName', 'http://target-service-endpoint-url.com' ) - 方法二:通过
bind直接指定服务名和端口名# 替换为你的目标服务名称和端口名称 target_service = client.bind('TargetServiceName', 'TargetServicePort')
- 方法一:通过
调用目标服务的方法
拿到服务代理后,直接调用对应的API方法即可:# 替换为实际的方法名和参数 response = target_service.GetTargetData(param1='value1', param2='value2')
注意事项
- 确保WSDL中的命名空间、服务名称、端口名称完全匹配,这些信息可以从WSDL文件的
<service>标签中找到,也可以通过第一步的打印代码获取。 - 如果遇到权限或地址错误,检查目标服务的endpoint地址是否正确,以及API调用所需的认证信息是否配置齐全。
内容的提问来源于stack exchange,提问作者4nakter
相关产品推荐
相关产品推荐

