【问题标题】:What does suds mean by "<faultcode/> not mapped to message part"?“<faultcode/> 未映射到消息部分”是什么意思?
【发布时间】:2010-06-03 03:10:54
【问题描述】:

我第一次使用 suds 并尝试与外部公司托管的服务器进行通信。当我在服务器上调用一个方法时,我得到了这个 XML。

<?xml version="1.0" encoding="UTF-8"?>
<soap:Envelope 
    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 
    xmlns:soapenc="http://schemas.xmlsoap.org/soap/encoding/" 
    xmlns:xsd="http://www.w3.org/2001/XMLSchema" 
    soap:encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" 
    xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/">
  <soap:Body>
    <soap:Fault>
      <faultcode>soap:Server</faultcode>

      <faultstring>Can't use string ("") as an ARRAY ref while "strict refs" in use at /vindicia/site_perl/Vindicia/Soap/DocLitUtils.pm line 130.
</faultstring>
    </soap:Fault>
  </soap:Body>
</soap:Envelope>

抛出的异常是这样的:

__call__ 中的文件“C:\Python26\lib\site-packages\suds-0.4-py2.6.egg\suds\client.py”,第 538 行 返回 client.invoke(args, kwargs) 调用中的文件“C:\Python26\lib\site-packages\suds-0.4-py2.6.egg\suds\client.py”,第 602 行 结果 = self.send(msg) 文件“C:\Python26\lib\site-packages\suds-0.4-py2.6.egg\suds\client.py”,第 634 行,在发送中 结果 = self.succeeded(绑定,reply.message) 文件“C:\Python26\lib\site-packages\suds-0.4-py2.6.egg\suds\client.py”,第 669 行,成功 r, p = binding.get_reply(self.method, 回复) 文件“C:\Python26\lib\site-packages\suds-0.4-py2.6.egg\suds\bindings\binding.py”,第 157 行,在 get_reply 结果 = self.replycomposite(rtypes,节点) 文件“C:\Python26\lib\site-packages\suds-0.4-py2.6.egg\suds\bindings\binding.py”,第 227 行,replycomposite raise Exception('未映射到消息部分'% 标记) 例外:“故障代码”未映射到消息部分

知道为什么 suds 会抛出异常吗?关于如何修复它的任何想法?

【问题讨论】:

  • 我也有同样的问题。找到什么了吗?
  • 不确定是什么原因,但似乎已在 0.4 beta 中修复。

标签: python soap suds


【解决方案1】:

我遇到了一个类似的问题,即调用成功,并且 suds 在解析来自客户端的响应时崩溃了。我使用的解决方法是使用suds option to return raw XML,然后使用BeautifulSoup 解析响应。

例子:

client = Client(url)
client.set_options(retxml=True)
soapresp_raw_xml = client.service.submit_func(data)
soup = BeautifulStoneSoup(soapresp_raw_xml)
value_i_want = soup.find('ns:NewSRId')

【讨论】:

  • 天哪,这是 1992 年的一些严肃的 HTML 网页(美汤)
  • 如果您要解析 XML,请记住使用有效的解析器作为第二个参数:soup = BeautifulSoup(soapresp_raw_xml,"lxml-xml")。考虑到构造函数已更改: 不再有用于解析 XML 的 BeautifulStoneSoup 类。要解析 XML,您将“xml”作为第二个参数传递给 BeautifulSoup 构造函数。出于同样的原因,BeautifulSoup 构造函数不再识别 isHTML 参数。 (crummy.com/software/BeautifulSoup/bs4/doc/#xml)
【解决方案2】:

已经在这里回答:What does suds mean by "<faultcode/> not mapped to message part"?

这个异常实际上意味着来自 SOAP-service 的答案包含标签 &lt;faultcode&gt;,该标签在服务的 WSDL-scheme 中不存在。

请记住,suds 库会缓存 WSDL 方案,这就是如果最近更改 WSDL 方案可能会出现问题的原因。然后答案与新方案匹配,但由 suds-client 与旧方案进行验证。在这种情况下,rm /tmp/suds/* 将为您提供帮助。

【讨论】:

    猜你喜欢
    • 2010-09-17
    • 1970-01-01
    • 2011-04-21
    • 2020-04-17
    • 1970-01-01
    • 1970-01-01
    • 2018-06-29
    • 1970-01-01
    • 2012-10-01
    相关资源
    最近更新 更多