2012-12-27 52 views
26

我有一個描述Java產品上的通信服務器 - 客戶機的wsdl文件。 我正在實現一個基於Python的新服務器,它將實現相同的服務。基於wsdl創建python肥皂服務器

你知道的任何方法來創建基於WSDL Python的服務器代碼,這並不需要我寫的所有涉及的複合類型的?

另外,你推薦什麼Api?

+3

爲此添加賞金。我簡直不敢相信沒有好的解決方案。 –

+0

BTW:你知道任何可以基於WSDL生成代碼(不是Python)的庫嗎?我很想知道爲Spyne實現這樣的功能是多麼困難(基於WSDL生成模型)。 – Pax0r

+1

似乎沒有成熟的蟒蛇肥皂服務器...不能相信這是發生在python –

回答

13

當談到SOAP支持時,不幸的是,Python不再與「電池包括」在一起。客戶端的支持是可以接受的,但在服務器端基本上是你自己的。

你可能想看看對於初學者如下:

http://wiki.python.org/moin/WebServices

http://pywebsvcs.sourceforge.net/

http://doughellmann.com/2009/09/01/evaluating-tools-for-developing-with-soap-in-python.html

如果你真的想要走這條路的,似乎ZSI是工具來使用,儘管我懷疑它會使用最新的2.x Python發行版。

使用Python 2.6.6,我試圖用ZSI 2.0來構建從WSDL開始的Web服務。當生成代碼wsdl2pywsdl2dispatch時,必須單獨安裝PyXML並破解我的sys.path只是爲了首先解決問題,否則我得到「模塊ext.reader不存在」,然後才結束在一個基本的「Hello世界!」中出現令人失望的「ZSI:EvaluateException獲得了無可刪除(假),minOccurs(1)元素」的錯誤!「帶有必需元素的WS。

切換到ZSI 2.1_a1不再需要的PyXML和wsdl2py所有這一切(什麼wsdl2dispatch沒有爲2.0),但仍與「ZSI死衚衕結束了:EvaluateException了無對的nillable(假)的minOccurs(1 )元素「錯誤。

的經歷是不是很有趣,但它足以讓我形成什麼Python有提供對SOAP Web服務......這是沒有太大的意見(這只是基本的網絡服務沒有什麼花哨如WS-* specs)。因人而異!

編輯:我最近碰到了this SO question,雖然相對於面向客戶的解決方案,但它也提到建立SOAP服務的一些庫。

+2

不幸的是,我來同意你的解決方案。對SOAP服務器的Python支持不太好。希望這些「新」圖書館取得一些成功。謝謝! – inversus

15

這個問題一直沒有得到足夠的重視。

目前公認的答案是好的,但它的答案是「不」。是否真的沒有合理的維護和一般解決方案?

不幸的是,我不認爲否定的答案是由於缺乏對這個問題的關注。在python中確實不支持WSDL。如果你想避免從零開始構建你自己的肥皂信封的複雜性,我可以推薦你的唯一的東西是使用許多soap web服務工具(例如soapui)中的任何一個來構建樣本信封,然後將其用作模板字符串(I知道,在你的Python代碼可怕)

UPDATE你可以使用spyne。這是一個python RPC工具包,其他協議支持SOAP。它會爲你創建WSDL,但是如果你的目標是實現你已經擁有的WSDL所描述的服務,那麼你將不得不微調你的spyne服務(用python編寫),直到生成的WSDL與原始的WSDL相匹配爲止