我正在寻找pythonSOAP1.2客户端,但它似乎不存在。所有现有客户端要么没有维护,要么只与SOAP1.1兼容:
发布于 2011-03-10 15:41:42
尽管这个问题有一个被接受的答案,但我还是希望有几个关于肥皂的笔记。
我目前正在编写一些代码,用于与.tel社区进行工作接口,并且我需要一个Python库,除了缺乏对SOAP1.2的支持之外,for是非常理想的。
我设法解决了这个问题,因为为了我的目的,SOAP1.1和SOAP1.2有足够的共同之处,所以我能够简单地修补suds以使用SOAP1.2信封命名空间。我概述了我在以下要点中所做的工作:https://gist.github.com/858851
值得在这里复制,下面是代码:
from suds.client import Client
from suds.bindings import binding
import logging
USERNAME = 'username'
PASSWORD = 'password'
# Just for debugging purposes.
logging.basicConfig(level=logging.INFO)
logging.getLogger('suds.client').setLevel(logging.DEBUG)
# Telnic's SOAP server expects a SOAP 1.2 envelope, not a SOAP 1.1 envelope
# and will complain if this hack isn't done.
binding.envns = ('SOAP-ENV', 'http://www.w3.org/2003/05/soap-envelope')
client = Client('client.wsdl',
username=USERNAME,
password=PASSWORD,
headers={'Content-Type': 'application/soap+xml'})
# This will now work just fine.
client.service.someRandomMethod()如果有时间的话,我计划向suds提交一个补丁,以允许指定SOAP版本,并添加足够少的功能以使其有用。
发布于 2010-03-12 05:44:07
如果您真的想使用SOAP1.2,即使它目前还没有被用作标准,我想我可以发布一个需要做一些工作的答案(所有这些都是为了更好的:))。
我建议您使用gSOAP
gSOAP -为C/C++爱好者开发基于XML服务和XML解析器的易于使用的跨平台工具包.虽然它是众所周知的Web服务开发工具包,并已被证明具有良好的性能,但它也可用于从XML模式或C/C++结构/类创建高性能的XML解析器、序列化器和反序列化器。我的实验结果表明,在DOM或SAX模式下,使用gSOAP工具包生成的XML解析器运行速度比xerces-c解析器快几倍。
现在,我希望这是那么简单。由于gSOAP是一个C++库,您必须包装它才能在C++中使用它。
包装库的一种方法是使用一个名为大口 (简化包装器和接口生成器)的工具。这个工具自动包装C/C++库,以便在高级语言中使用,例如(您猜到了) Python。
我还建议您阅读此PDF文件(见第14页)关于用C++实现gSOAP的内容。这很有帮助。
使用此解决方案,您可以利用良好的托管库、SOAP1.2和非常好的性能比。我想你会对结果很满意的。
发布于 2010-03-12 13:12:22
几年前,我也遇到过类似的问题,我通过使用Jython解决了这个问题。
如果没有SOAP1.2forPython的现有实现,您可能会对Jython感兴趣,它将您与Java无缝地集成在一起。这意味着,您可以使用任何已存在的SOAP1.2 Java类并将其导入您的Jython程序。Jython程序只是Python程序,但您可以导入Java类。
Jython本身包括标准Python编程语言发行版中的几乎所有模块,但请确保您的程序不使用任何特殊的非标准Python库。
例如:您安装了Jython (它是免费的和开放源码的),您的Python程序名为myprog.py,您希望使用Java类CLASSNAME:
1)导入必需的Java类,将import CLASSNAME插入到myprog.py中
2)运行jython myprog.py
https://stackoverflow.com/questions/2370573
复制相似问题