2009-11-17 106 views
1

我有一個Python和SOAP的問題。我需要在Python中基於SOAP創建一個Web服務。我讀到可以使用soaplib,suds和ZSI等庫。我使用soaplib創建了一個Hello World Web服務,就像在文檔中一樣(http://trac.optio.webfactional.com/wiki/HelloWorld)。問題是我無法爲使用非soaplib庫的Web服務創建客戶端。我想用Python中的suds庫來做客戶端應用程序。Python SOAP服務器/客戶端

您是否設法在Python中使用soaplib創建SOAP應用程序(例如,使用suds庫)?

+0

是的,我已經做了一個web服務使用soaplib,我可以從泡沫(和許多其他客戶)消耗。如果沒有更多的信息說明你有什麼問題難以說出任何其他問題。 – robince 2009-11-17 19:35:54

+0

很高興聽到:)下面是使用泡沫的代碼片段,我的問題是我不知道應該使用哪個URL。我得到了503 snd 504的答覆。 from suds.client import客戶端 客戶端=客戶端(URL) 打印客戶端 – 2009-11-17 20:21:24

回答

2

你是如何爲服務提供服務的? soaplib產生一個WSGI對象,它需要由一個web服務器來提供。如果您遵循您鏈接到的helloworld示例,那麼您正在使用CherryPy(一個純粹的Python Web服務器)在您自己的機器上託管服務。在這個例子中,端口是7789(但你可以使用任何你喜歡的東西)。所以,如果你使用這個例子,你應該首先啓動運行cherrypy的腳本 - 這個腳本應該保持運行並且不會返回到提示符。在運行時,您應該可以訪問http://localhost:7789/wsdl處的服務 - 您可以將該地址放入網絡瀏覽器,以查看其是否正常工作。只要URL在wsdl中結束,Soaplib將返回wsdl - 因此實際上您可以執行http://localhost:7789/anythingherewsdl

+0

非常有幫助!非常感謝您的幫助。 – 2009-11-17 23:22:37

+0

首先,感謝您的幫助。我不知道爲什麼,但在我看來,問題出在我的網絡代理上。當我使用下面提供的代碼時,我得到了HTTP錯誤503:服務從suds.client不可用導入客戶端客戶端=客戶端(「http:// localhost:7789/wsdl」)打印客戶端當我關閉該Web代理時,成功!希望我找到了一個能夠解決這個問題的網頁(http://blog.finalhaven.org/2009/01/making-suds-not-use-proxy.html)。 – 2009-11-18 01:44:18

+0

你沒有說你正在使用什麼操作系統,或者你如何配置代理 - 但是在大多數情況下,在代理配置屏幕中,有一個設置,如「No proxy for:」或「bypass proxy for:」,你應該把localhost放在那裏。本地主機是指向自己的計算機的特殊環回地址,因此如果您通過代理服務器 - 它指向代理服務器所在的計算機。 – robince 2009-11-18 10:04:58

1

你問是否有可能使用(消費)使用soaplib以外的東西構建的SOAP Web服務?那當然是可能的。 Suds對此是個好主意。

+0

好吧,但我不知道它是怎麼做的。我正在尋找一個教程或一個簡單的例子,它展示瞭如何使用soaplib創建soap soap創建的soap web服務,但我找不到它。 – 2009-11-17 20:34:31

+0

查看https://fedorahosted.org/suds/wiki/Documentation以獲得開始。 「基本用法」下面的東西可能會有所幫助。 – 2009-11-17 21:00:58

+0

@jlafay請參閱[this](http://stackoverflow.com/privileges/edit),特別是「微小的,平凡的編輯不鼓勵」 – 2011-08-22 14:16:53