我正在使用 suds 以这种方式使用 SOAP 网络服务:
from suds.client import Client
url = "http://www.example.com?wsdl"
client = Client(url)
client.service.example(xml_argument)
如果我使用这个 xml 调用方法:
<?xml version="1.0" encoding="UTF-8"?><a><b description="Foo Bar"></b></a>
但是如果我像这样添加引号(转义):
<?xml version="1.0" encoding="UTF-8"?><a><b description="Foo " Bar"></b></a>
我收到以下错误(来自网络服务):
Attribute name "Bar" associated with an element type "b" must be followed by the ' = ' character.
我正在使用版本:0.4 GA 构建:R699-20100913
我没有以正确的方式使用 suds.client 吗?有什么建议吗?
更新:
我已经联系了客户支持,通过电子邮件向他们发送了我的转义 XML,他们告诉我这对他们有效,所以可能是由于我身边的泡沫使用不当造成的。我会尝试使用 PySimpleSOAP .
请您参考如下方法:
我的主要是猜测,但您引用的错误似乎是由提供服务的机器上的 XML 格式良好性检查程序生成的。
似乎在电缆的那一侧,他们得到了类似的东西:
<a><b description="Foo" Bar"></b></a>
(" converted to ") 因此他们告诉你你应该发送这样的东西:
<a><b description="Foo" Bar="..."></b></a>
这显然不是你想要的。
据我所知,您的 XML 格式正确(刚刚测试了 here 以获得额外的安全性),所以要么 suds 中存在错误(考虑到错误的严重程度和包的成熟度,这会让我感到惊讶)或者提供服务的服务器上的错误(可能是从 XML 实体到常规字符的“过早转换”)。
再说一次:这里有很多猜测和一些确凿的事实,但我仍然 HTH! :)
