2009-11-17 105 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