使用转义的xml作为属性来使用SOAP Web服务

时间:2011-07-20 22:50:13

标签: python xml soap wsdl suds

我正在使用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 &quot; Bar"></b></a>

我收到以下错误(来自网络服务):

  

与元素类型“b”关联的属性名称“Bar”必须是   后跟'='字符。

我使用的版本:0.4 GA版本:R699-20100913

我没有以正确的方式使用suds.client吗?有什么建议吗?


更新:

我已经联系了客户支持,通过电子邮件向他们发送了我的转发XML,他们告诉我它适用于他们,所以可能是由于我身边肥皂水的不良用途造成的。我将尝试使用PySimpleSOAP

1 个答案:

答案 0 :(得分:1)

我的猜测主要是猜测,但您引用的错误似乎是从提供服务的计算机上的XML格式良好检查器生成的。

似乎在电缆的那一侧,他们得到了类似的东西:

<a><b description="Foo" Bar"></b></a>

&quot;转换为")因此他们告诉您应该发送类似的内容:

<a><b description="Foo" Bar="..."></b></a>

这显然不是你想要的。

AFAIK你的XML格式正确(刚刚测试here以获得额外的安全性),所以要么suds中有一个bug(考虑到bug的大小和包的成熟度,这会让我感到惊讶)或者提供服务的服务器上存在一个错误(可能是从XML实体到常规字符的“过早转换”)。

再次:很多猜测和很少的事实,但我还是HTH! :)