如何使用python从wsdl响应中提取Soap Web服务的端点

时间:2019-06-21 07:07:11

标签: python-3.x web-services soap

我想从Web服务获取数据。端点存储在wsdl的响应中的地址位置标记中。如何从中提取该地址位置?

我已经使用xml.etree.ElementTree提取元素。我在启动事件中发现它为“”“,在0x00000032DF7​​AC908>”“”处启动http://schemas.xmlsoap.org/wsdl/soap/}地址',但它在地址('0x00000032DF7​​AC908')中。我看不懂。

我还使用过zeep的Client。我可以找到服务,端口,操作等的值。但是,我找不到地址位置

import requests
import xml.etree.ElementTree as et
import operator

from io import StringIO
from zeep import Client
from requests.auth import HTTPBasicAuth  # or HTTPDigestAuth, or OAuth1, etc.
from zeep.transports import Transport
from requests import Session

url="aaa"
user="bbb"
pwd="ccc"

response = requests.get(url, auth=(user, pwd))
my_schema = response.text

#############################################################################
#part1
events = ['start']
for event, elem in et.iterparse(StringIO(my_schema), events=events):
    print (event, elem)
#############################################################################
#part2
session = Session()
session.auth = HTTPBasicAuth(user, pwd)
client = Client(url, transport=Transport(session=session))
for service in client.wsdl.services.values():
    print ("service:", service.name)
    for port in service.ports.values():
        operations = sorted(
            port.binding._operations.values(),
            key=operator.attrgetter('name'))
        print("port :",port)
        print("binding :",port.binding)
        print("operation :",operations)

        for operation in operations:
            print ("method :", operation.name)
            print ("  input :", operation.input.signature())
            print ("  output:", operation.output.signature())
            print("list",  operation.input.body.type.elements)

在第一部分中,我得到了: 在0x00000032DF7​​AC908>处开始http://schemas.xmlsoap.org/wsdl/soap/}地址”。如何从该地址阅读?

在第二部分中,我找不到有关它的任何信息。我应该用什么来获得它?

0 个答案:

没有答案
相关问题