2011-07-20 19 views
2

我使用肥皂水消費SOAP Web服務這樣的方式SOAP Web服務:消費使用轉義XML作爲屬性

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> 

我得到以下錯誤(從WebService):

與元素類型「b」關聯的屬性名稱「Bar」必須爲 ,後跟'='字符。

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

難道我沒有使用suds.client在正確的方法是什麼?有什麼建議麼?


UPDATE:

我已經聯繫客戶支持,給他們發電子郵件我逃脫XML,他們告訴我,這爲他們工作,所以這可能是由於從泡沫在我的身邊一個壞的使用造成的。我會試試PySimpleSOAP

回答

1

我主要是猜測,但是您引用的錯誤似乎是由提供該服務的計算機上的XML格式良好檢查程序生成的。

看來,他們越來越像電纜的那一面:

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

&quot;轉化爲"),因此他們告訴你,你應該改爲發送類似:

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

這顯然不是你想要的。如果您的XML格式良好(爲了更加安全,只需測試here),所以無論是泡沫中的錯誤(考慮到錯誤的嚴重程度和軟件包的成熟度,這都會讓我感到驚訝),或者存在提供服務的服務器上的錯誤(可能是從XML實體到正常字符的「過早轉換」)。

再一次:很多猜測和很少的硬性事實在這裏,但我仍然HTH! :)

+2

不知道如果我被文檔弄糊塗(我沒有以前的SOAP經驗),但發現這個https://fedorahosted.org/suds/wiki/TipsAndTricks#IncludingLiteralXML我明白我應該通過一個Element實例,而不是字符串形式的xml。我會嘗試,謝謝你的迴應和猜測:) – juanefren

+0

這不是我正在尋找,但它以某種方式幫助,謝謝:)這是我正在尋找http:// stackoverflow的解決方案。 COM /問題/ 7619328 /消耗,WSDL的網址與 - XML的使用轉義 - 字符 - 爲 - 參數/ 7677216#7677216 – juanefren