Python 从soap信封zeep获取数据

Python 从soap信封zeep获取数据,python,soap,wsdl,Python,Soap,Wsdl,我正试图在python库的帮助下使用wsdl。它工作得很好,但我不知道如何从请求中获取数据 我的代码: # encoding=utf-8 from requests.auth import HTTPBasicAuth # or HTTPDigestAuth, or OAuth1, etc. from zeep import Client from zeep import helpers from zeep.transports import Transport import logging.c

我正试图在python库的帮助下使用wsdl。它工作得很好,但我不知道如何从请求中获取数据

我的代码:

# encoding=utf-8
from requests.auth import HTTPBasicAuth  # or HTTPDigestAuth, or OAuth1, etc.
from zeep import Client
from zeep import helpers
from zeep.transports import Transport
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'],
        },
    }
})
wsdl = 'wsdl_url'
user = 'login'
password = 'password'
my_transport = Transport(http_auth=HTTPBasicAuth(user, password))
client = Client(
    wsdl, transport=my_transport
)
result = client.service.FunctionName(...)
print result
因此,我得出以下结论:

{
 'schema': <Schema(location=None)>,
 '_value_1': <Element {urn:schemas-microsoft-com:xml-diffgram- v1}diffgram at 0x104ec0098>
}
{
“架构”:,
“_值_1”:
}
显然,这不是我想要的。多亏了日志记录,我可以看到,实际上我通过信封获得了所需的信息:


我的问题是,如何访问信封内的数据(我需要行顺序,部分显示在屏幕上)

我也面临同样的问题。我就是这样做的。这不是最好的方法,但这可以是一个开始,我希望造物主原谅我。 另外,我刚刚开始学习python

在此处克隆zeep项目: 然后转到那个文件夹

在transports.py中,在构造函数(init)中添加此行:

然后在方法公告中,在返回响应之前,添加以下行:

self.response = response
在此之后,通过执行

python setup.py install
这应该在您的virtualenv中(如果您正在使用)

因此,在您的代码中,您可以打印

print my_transport.response.content

希望这有帮助

使用Zeep 2.4.0版,我能够通过将raw_response选项传递给客户端来获得原始响应。这告诉客户机返回请求响应对象

下面是示例代码:

使用Zeep v.3.1.0只需将
client.options
更改为
client.settings
print my_transport.response.content
from zeep import Client

wsdl = 'wsdl_url'

client = Client(wsdl)

with client.options(raw_response=True):
    soap_result = client.service.function_name(...)

# Print out text from Requests response object returned    
print soap_result.text