suds 是个好东西,轻便,主要是体积够小,依赖包也小,可以满足小脚本的需要。
现在最新的suds版本是0.4 ,好像已经不再更新了,不过依旧好用。
上这个网址下载,本人下的是tar包自己本地进行编译
https://pypi.python.org/pypi/suds/0.4

Python2的可以下载tar包后,解压,进入解压的目录 suds-0.4
在cmd运行语句 python setup.py install
如果没什么的问题的话 在cmd 运行语句 pip list 就知道成功没了。
可惜我的电脑是Python3
毫无悬念的报错了
Traceback (most recent call last):
File “setup.py”, line 20, in
import suds
File “C:\Users\Administrator\Desktop\suds-0.4\suds-0.4\suds\__init__.py”, line
154, in
import client
ModuleNotFoundError: No module named ‘client’
后来查了一下
Python3 用的这个suds-jurko
https://pypi.python.org/pypi/suds-jurko/0.6
安装方法跟Python2一样。
如果安装完后 import 失败找不到suds库的话,把压缩包的suds,suds.egg-info放到Python目录的\Lib\site-packages目录下,就不会报错了。
开始来点代码吧。
这个网址有很多webservice服务,我随便用了个天气的来试了一下
http://www.webxml.com.cn/zh_cn/web_services.aspx
from suds.client import Client client = Client('http://www.webxml.com.cn/webservices/OnlineWebService.asmx?wsdl')#腾讯在线状态WEB服务 print(client) #看看这个service有什么方法可以用
Suds ( https://fedorahosted.org/suds/ ) version: 0.6
Service ( OnlineWebService ) tns=”http://WebXml.com.cn/”
Prefixes (0)
Ports (2):
(OnlineWebServiceSoap)
Methods (1):
CheckOnline(xs:string Code)
Types (0):
(OnlineWebServiceSoap12)
Methods (1):
CheckOnline(xs:string Code)
Types (0):
所以方法调用就可以这样
from suds.client import Client client = Client('http://www.webxml.com.cn/webservices/OnlineWebService.asmx?wsdl') result=client.service.CheckOnline("") print (result)
就是这么简单。其实我觉得suds最好用的地方是设置。
from suds.client import Client client = Client('http://www.webxml.com.cn/webservices/OnlineWebService.asmx?wsdl') print (client.options)
Definitions: cache: classes=(
,), default=
documentStore: classes=(
,), default=
extraArgumentErrors: classes=(
,), default=True faults: classes=(
,), default=True transport: classes=(
,), default=None service: classes=(
,
), default=None port: classes=(
,
), default=None location: classes=(
,), default=None soapheaders: classes=*, default=() wsse: classes=(
,), default=None doctor: classes=(
,), default=None xstq: classes=(
,), default=True prefixes: classes=(
,), default=True retxml: classes=(
,), default=False prettyxml: classes=(
,), default=False autoblend: classes=(
,), default=False cachingpolicy: classes=(
,), default=0 plugins: classes=(
,
), default=[] nosend: classes=(
,), default=False unwrap: classes=(
,), default=True Content: ('cache',
) ('documentStore',
) ('extraArgumentErrors', True) ('faults', True) ('transport',
) ('service', None) ('port', None) ('location', None) ('soapheaders', ()) ('wsse', None) ('doctor', None) ('xstq', True) ('prefixes', True) ('retxml', False) ('prettyxml', False) ('autoblend', False) ('cachingpolicy', 0) ('plugins', []) ('nosend', False) ('unwrap', True) Linked: Definitions: proxy: classes=(
,), default={} timeout: classes=(
,
), default=90 headers: classes=(
,), default={} username: classes=(
,), default=None password: classes=(
,), default=None Content: ('proxy', {}) ('timeout', 90) ('headers', {}) ('username', None) ('password', None) Linked: Definitions: cache: classes=(
,), default=
documentStore: classes=(
,), default=
extraArgumentErrors: classes=(
,), default=True faults: classes=(
,), default=True transport: classes=(
,), default=None service: classes=(
,
), default=None port: classes=(
,
), default=None location: classes=(
,), default=None soapheaders: classes=*, default=() wsse: classes=(
,), default=None doctor: classes=(
,), default=None xstq: classes=(
,), default=True prefixes: classes=(
,), default=True retxml: classes=(
,), default=False prettyxml: classes=(
,), default=False autoblend: classes=(
,), default=False cachingpolicy: classes=(
,), default=0 plugins: classes=(
,
), default=[] nosend: classes=(
,), default=False unwrap: classes=(
,), default=True Content: ('cache',
) ('documentStore',
) ('extraArgumentErrors', True) ('faults', True) ('transport',
) ('service', None) ('port', None) ('location', None) ('soapheaders', ()) ('wsse', None) ('doctor', None) ('xstq', True) ('prefixes', True) ('retxml', False) ('prettyxml', False) ('autoblend', False) ('cachingpolicy', 0) ('plugins', []) ('nosend', False) ('unwrap', True)
之前找了很多文档都不知道怎么设置超时限制,自己想着直接把option打出来不就知道有什么可以设置了吗
from suds.client import Client client = Client('http://www.webxml.com.cn/webservices/OnlineWebService.asmx?wsdl') client.set_options(timeout=100)#这里单位是秒哦 result=client.service.CheckOnline("")
先写着这么多吧。。。
发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/225005.html原文链接:https://javaforall.net
