我想在Python中使用基于WSDL-SOAP的web服务。我已经看过Dive Into Python代码,但是SOAPpy模块在Python 2.5下不工作。
我试过使用suds,它可以部分工作,但会中断某些类型(suds.Type not found:Type notfound:'item')。
我还查看了Client,但这似乎不支持WSDL。
我看过ZSI但是看起来很复杂。有人有它的样本代码吗?
WSDL是https://ws.pingdom.com/soap/PingdomAPI.wsdl,可以与PHP 5 SOAP客户端一起正常工作。
我最近偶然发现了同样的问题。以下是我的解决方案概要:
所需的基本组成代码块
以下是客户端应用程序所需的基本代码块
您需要哪些模块?
许多人建议使用诸如urllib2之类的Python模块;但是,至少没有一个模块可以用于这个特定的项目。
这是你需要的模块列表。 首先,您需要从以下链接下载并安装最新版本的suds:
另外,您需要分别从以下链接下载并安装requests和sud_requests模块(免责声明:我是新来的,所以我现在不能发布多个链接)。
一旦您成功下载并安装了这些模块,就可以开始了。
代码
按照前面概述的步骤,代码如下所示: 进口:
会话请求和身份验证:
创建客户端:
添加WS-Security头:
请注意,此方法创建图1所示的安全头。因此,您的实现可能会有所不同,这取决于您正在使用的服务的所有者提供的正确安全头格式。
使用相关方法(或操作):
日志记录:
在这样的实现中,最好的做法之一是记录日志以查看通信是如何执行的。如果有什么问题,它会使调试变得容易。以下代码执行基本日志记录。但是,除了代码中描述的内容之外,您还可以记录通信的许多方面。
结果:
这是我案子的结果。注意,服务器返回了HTTP 200。这是HTTP请求响应的标准成功代码。
我建议你看看SUDS
“Suds是一个用于消费Web服务的轻量级SOAP python客户端。”
有一个相对较新的库是非常有前途的,虽然仍然没有很好的文档,似乎非常干净和Python:python zeep。
另请参见this answer以获取示例。
相关问题 更多 >
编程相关推荐