Skip to main content
 首页 » 编程设计

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

2025年05月04日32hnrainll

我正在使用 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 &quot; 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! :)