suds调用webservice,option设置

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 <module>
    import suds
  File "C:\Users\Administrator\Desktop\suds-0.4\suds-0.4\suds\__init__.py", line
 154, in <module>
    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/qqOnlineWebService.asmx?wsdl')#腾讯QQ在线状态WEB服务
print(client) #看看这个service有什么方法可以用
Suds ( https://fedorahosted.org/suds/ )  version: 0.6
Service ( qqOnlineWebService ) tns="http://WebXml.com.cn/"
   Prefixes (0)
   Ports (2):
      (qqOnlineWebServiceSoap)
         Methods (1):
            qqCheckOnline(xs:string qqCode)
         Types (0):
      (qqOnlineWebServiceSoap12)
         Methods (1):
            qqCheckOnline(xs:string qqCode)
         Types (0):


接口有两个,方法就是qqCheckOnline()  

所以方法调用就可以这样

from suds.client import Client
client = Client('http://www.webxml.com.cn/webservices/qqOnlineWebService.asmx?wsdl')
result=client.service.qqCheckOnline("543318638")
print (result)

就是这么简单。其实我觉得suds最好用的地方是设置。

from suds.client import Client
client = Client('http://www.webxml.com.cn/webservices/qqOnlineWebService.asmx?wsdl')
print (client.options)

Definitions:
	cache: classes=(<class 'suds.cache.Cache'>,), default=<suds.cache.NoCache object at 0x00000000025784A8>
	documentStore: classes=(<class 'suds.store.DocumentStore'>,), default=<suds.store.DocumentStore object at 0x00000000029A9EF0>
	extraArgumentErrors: classes=(<class 'bool'>,), default=True
	faults: classes=(<class 'bool'>,), default=True
	transport: classes=(<class 'suds.transport.Transport'>,), default=None
	service: classes=(<class 'int'>, <class 'str'>), default=None
	port: classes=(<class 'int'>, <class 'str'>), default=None
	location: classes=(<class 'str'>,), default=None
	soapheaders: classes=*, default=()
	wsse: classes=(<class 'suds.wsse.Security'>,), default=None
	doctor: classes=(<class 'suds.xsd.doctor.Doctor'>,), default=None
	xstq: classes=(<class 'bool'>,), default=True
	prefixes: classes=(<class 'bool'>,), default=True
	retxml: classes=(<class 'bool'>,), default=False
	prettyxml: classes=(<class 'bool'>,), default=False
	autoblend: classes=(<class 'bool'>,), default=False
	cachingpolicy: classes=(<class 'int'>,), default=0
	plugins: classes=(<class 'list'>, <class 'tuple'>), default=[]
	nosend: classes=(<class 'bool'>,), default=False
	unwrap: classes=(<class 'bool'>,), default=True
Content:
	('cache', <suds.cache.ObjectCache object at 0x0000000002C077B8>)
	('documentStore', <suds.store.DocumentStore object at 0x00000000029A9EF0>)
	('extraArgumentErrors', True)
	('faults', True)
	('transport', <suds.transport.https.HttpAuthenticated object at 0x0000000002C07320>)
	('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=(<class 'dict'>,), default={}
	timeout: classes=(<class 'int'>, <class 'float'>), default=90
	headers: classes=(<class 'dict'>,), default={}
	username: classes=(<class 'str'>,), default=None
	password: classes=(<class 'str'>,), default=None
Content:
	('proxy', {})
	('timeout', 90)
	('headers', {})
	('username', None)
	('password', None)
Linked:
Definitions:
	cache: classes=(<class 'suds.cache.Cache'>,), default=<suds.cache.NoCache object at 0x00000000025784A8>
	documentStore: classes=(<class 'suds.store.DocumentStore'>,), default=<suds.store.DocumentStore object at 0x00000000029A9EF0>
	extraArgumentErrors: classes=(<class 'bool'>,), default=True
	faults: classes=(<class 'bool'>,), default=True
	transport: classes=(<class 'suds.transport.Transport'>,), default=None
	service: classes=(<class 'int'>, <class 'str'>), default=None
	port: classes=(<class 'int'>, <class 'str'>), default=None
	location: classes=(<class 'str'>,), default=None
	soapheaders: classes=*, default=()
	wsse: classes=(<class 'suds.wsse.Security'>,), default=None
	doctor: classes=(<class 'suds.xsd.doctor.Doctor'>,), default=None
	xstq: classes=(<class 'bool'>,), default=True
	prefixes: classes=(<class 'bool'>,), default=True
	retxml: classes=(<class 'bool'>,), default=False
	prettyxml: classes=(<class 'bool'>,), default=False
	autoblend: classes=(<class 'bool'>,), default=False
	cachingpolicy: classes=(<class 'int'>,), default=0
	plugins: classes=(<class 'list'>, <class 'tuple'>), default=[]
	nosend: classes=(<class 'bool'>,), default=False
	unwrap: classes=(<class 'bool'>,), default=True
Content:
	('cache', <suds.cache.ObjectCache object at 0x0000000002C077B8>)
	('documentStore', <suds.store.DocumentStore object at 0x00000000029A9EF0>)
	('extraArgumentErrors', True)
	('faults', True)
	('transport', <suds.transport.https.HttpAuthenticated object at 0x0000000002C07320>)
	('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/qqOnlineWebService.asmx?wsdl')
client.set_options(timeout=100)#这里单位是秒哦
result=client.service.qqCheckOnline("543318638")
先写着这么多吧。。。

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值