我正在使用suds以这种方式使用SOAP Web服务:
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>
我收到以下错误(来自网络服务):
与元素类型“b”关联的属性名称“Bar”必须是 后跟'='字符。
我使用的版本:0.4 GA版本:R699-20100913
我没有以正确的方式使用suds.client吗?有什么建议吗?
更新:
我已经联系了客户支持,通过电子邮件向他们发送了我的转发XML,他们告诉我它适用于他们,所以可能是由于我身边肥皂水的不良用途造成的。我将尝试使用PySimpleSOAP。
答案 0 :(得分:1)
我的猜测主要是猜测,但您引用的错误似乎是从提供服务的计算机上的XML格式良好检查器生成的。
似乎在电缆的那一侧,他们得到了类似的东西:
<a><b description="Foo" Bar"></b></a>
("
转换为"
)因此他们告诉您应该发送类似的内容:
<a><b description="Foo" Bar="..."></b></a>
这显然不是你想要的。
AFAIK你的XML格式正确(刚刚测试here以获得额外的安全性),所以要么suds中有一个bug(考虑到bug的大小和包的成熟度,这会让我感到惊讶)或者提供服务的服务器上存在一个错误(可能是从XML实体到常规字符的“过早转换”)。
再次:很多猜测和很少的事实,但我还是HTH! :)