Python Zeep - HTTP状态415(没有可用内容)

时间:2017-12-18 11:35:45

标签: python web-services soap zeep

您好我使用zeep来使用基于肥皂的网络服务, 我一直在收到HTTP状态415错误。我挖了一下并使用了 Pycharm Debuggger发现原因是:

  

'无法处理邮件,因为内容类型为''text / xml;   charset = utf-8 XaSOfalw:rtt; ___ utmvmBfuwVEwB = yEnqIuCmRhw \'是   不是预期的类型\'text / xml;字符集= UTF-8 \ ''

内容类型有什么问题?以及如何在Zeep中更改它?

我刚刚创建了一个简单的测试代码,如下所示:

from zeep import Client

pretend_wsdl = 'https://pretendwsdl'
client = Client(wsdl=pretend_wsdl)

res = client.service.NameOfService()
print(res)

并收到此错误:

  

zeep.exceptions.TransportError:服务器返回HTTP状态415(没有   内容可用)

1 个答案:

答案 0 :(得分:0)

我已经在zeep客户端中使用plugins解决了这个问题。

我的代码如下所示:

from zeep import Client
from zeep import Plugin


class MyLoggingPlugin(Plugin):

    def ingress(self, envelope, http_headers, operation):
        return envelope, http_headers

    def egress(self, envelope, http_headers, operation, binding_options):
        http_headers['Content-Type'] = 'text/xml; charset=utf-8;'
        return envelope, http_headers


pretend_wsdl = 'https://pretendwsdl.com'

client = Client(wsdl=pretend_wsdl, plugins=[MyLoggingPlugin()])

res = client.service.NameOfService()

print(res)

我发现它很奇怪,因为zeep的默认内容类型是text / xml;字符集= UTF-8; 我正在使用的wsdl并不认为来自zeep的内容类型是text / xml;字符集= UTF-8;

所以我使用zeep插件将内容类型显式设置为text / xml;字符集= UTF-8;它令人惊讶地工作。