python - 泡沫错误 : BadStatusLine in httplib

标签 python soap suds httplib

我正在使用 suds 0.3.6。创建 suds 客户端时,随机出现错误:

httplib.py,_read_status(),第 355 行,类 httplib.BadStatusLine'

这是用于创建客户端的代码:

imp = Import('http://www.w3.org/2001/XMLSchema')
imp.filter.add('http://tempuri.org/encodedTypes')
imp.filter.add('http://tempuri.org/')
self.doctor = ImportDoctor(imp)

self.client = Client(self.URL,doctor=self.doctor)

这个错误是什么意思,我该如何解决?

谢谢!

最佳答案

我遇到了同样的问题。为了解决问题,我打开了完整的泡沫记录:

logging.basicConfig(level=logging.INFO)
logging.getLogger("suds.client").setLevel(logging.DEBUG)
logging.getLogger("suds.transport").setLevel(logging.DEBUG)
logging.getLogger("suds.xsd.schema").setLevel(logging.DEBUG)
logging.getLogger("suds.wsdl").setLevel(logging.DEBUG)

通过调试输出,我注意到 SUDS 尝试下载 http://www.w3.org/2001/xml.xsd 时发生错误(该特定模式以某种方式被我试图调用的服务引用)。结果是 w3.org 服务器重载( linklink )。

SUDS Client 可以配置为使用缓存。我实现了一个缓存对象,它返回 SUDS 命中的两个 w3.org URL 的内容(您可以在日志输出中找到这些 URL)。我使用浏览器获取这两个模式并将它们保存到磁盘,然后将内容作为字符串常量放入源代码文件中。

from suds.cache import NoCache
from suds.sax.parser import Parser

class StaticSudsCache(NoCache):
    def get(self, id):
        STATIC = {"http://www.w3.org/2001/xml.xsd": XML_XSD,
                "http://www.w3.org/2001/XMLSchema.xsd": XMLSCHEMA_XSD }
        xml_string = STATIC.get(id.name)
        if xml_string:
            p = Parser()
            return p.parse(string=xml_string)

from suds.client import Client
c = Client(service_url, cache=StaticSudsCache())

XML_XSD = """... contents from file ..."""
XMLSCHEMA_XSD = """... contents from file ..."""

包含 XML 模式内容的完整代码是 here .

关于python - 泡沫错误 : BadStatusLine in httplib,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7725693/

相关文章:

python-2.7 - 如何在 Python 中使用 Suds 提取方法

python - 使用转义的 xml 作为属性使用 SOAP web 服务

python - 从 numpy 数组中删除特定元素

python - 如何使用plotlyexpress向折线图添加点或标记?

web-services - HTTP 响应 header - 应用程序版本

java - 在 Java 中使用 XPath 解析 SOAP 消息

python - SUDS 的 WSDL 加载缓慢

python - Django教程: 'detail' is not a valid view function or pattern name

python - 如何在 Python 中找到缺失参数的名称?

java - Axis2 Web 服务 -> php