嗨,我正在使用zeep消耗基于肥皂的Web服务,
而且我继续收到HTTP status 415错误。我挖一点用
Pycharm Debuggger,发现原因是:


  '由于内容类型为\'text / xml,因此无法处理该消息;
  charset = utf-8 XaSOfalw:rtt; ___ utmvmBfuwVEwB = yEnqIuCmRhw \'为
  不是预期的类型\'text / xml; charset = 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(否
  可用内容)

最佳答案

我已经通过在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; charset = utf-8;
我正在使用的wsdl并不认为zeep的内容类型是text / xml; charset = utf-8;

因此,我使用zeep插件将内容类型显式设置为text / xml。 charset = utf-8;并且令人惊讶地有效。

关于python - Python Zeep-HTTP状态415(无可用内容),我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/47867661/

10-09 05:55