如何在 python 中使用 zeep 实现 wsdl?

How to implement a wsdl with zeep in python?

我正在使用 zeep 来实现 Web 服务,其中一个 WSDL 在 python 中不起作用,但在 c# 中没问题。

这是我使用的代码:

from zeep import Client
wsdl = 'https://sep.shaparak.ir/payments/initpayment.asmx?wsdl'
client = Client(wsdl)

而且,我的错误是:

requests.exceptions.HTTPError: 500 Server Error: Internal Server
Error for url: https://sep.shaparak.ir/payments/initpayment.asmx?wsdl

在 C# 中它有效!你有什么想法可以帮助我吗?!

根据您提供的信息,我无法帮助您解决内部服务器错误。但是,我可以帮助您了解更多信息...

http://docs.python-zeep.org/en/master/transport.html#debugging

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有问题,换个试试。
例如:http://www.soapclient.com/xml/soapresponder.wsdl
并将您的代码编辑为:

client = zeep.Client(wsdl)

我将 zeep 与 magento 一起使用,这是我如何加载 wsdl 并获取会话 ID

from zeep import Client
soap = Client(http://my-wsdl)
session = soap.service.login(USER, PASSWORD)

替换 http://my-wsdl、用户密码(如适用)

然后,拨打电话

list_of_attribute_sets = soap.service.catalogProductAttributeSetList(session)

希望对您有所帮助。