Python Zeep - HTTP 状态 415(无可用内容)
Python Zeep - HTTP status 415 (no content available)
您好,我正在使用 zeep 来使用基于 soap 的 Web 服务,
而且我不断收到 HTTP 状态 415 错误。我深入挖掘并使用
Pycharm调试发现原因是:
'Cannot process the message because the content type \'text/xml;
charset=utf-8 XaSOfalw: rtt; ___utmvmBfuwVEwB=yEnqIuCmRhw\' was
not the expected type \'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: Server returned HTTP status 415 (no
content available)
我在 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;而且效果惊人。
您好,我正在使用 zeep 来使用基于 soap 的 Web 服务, 而且我不断收到 HTTP 状态 415 错误。我深入挖掘并使用 Pycharm调试发现原因是:
'Cannot process the message because the content type \'text/xml; charset=utf-8 XaSOfalw: rtt; ___utmvmBfuwVEwB=yEnqIuCmRhw\' was not the expected type \'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: Server returned HTTP status 415 (no content available)
我在 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;而且效果惊人。