webservice接口测试,需要用到suds库,suds只支持python2,如果是Python3.6版本,需要用到suds-jurko,
1) 下载 https://pypi.python.org/pypi/suds/0.4
2)解压压缩包,放到Python安装路径下的scripts文件夹下面。
3)然后在cmd命令行中,进入到suds-jurko-0.4.1.jurko.4文件下面,输入命令:python setup.py install
4)注意:如果在py中写代码 import suds报错,就要把suds-jurko-0.4.1.jurko.4文件夹下面的dist、suds以及suds_jurko.egg-info这三个文件夹,拷贝到Lib下面的site-packages路径下面
5)如果from suds.clientimportClient,提示 ImportError:No module named version 最后pip install --upgrade suds-jurko
其实可以一步到位 pip3 install suds-jurko
Python3 用的这个suds-jurko,安装方法跟Python2一样。
https://pypi.python.org/pypi/suds-jurko/0.6
测试:
可以看到其中有检查qq是否在线的方法,然后调用检测一个qq号码是否在线进行测试
另外如果获取数据量比较大,可以在获取数据之前设置超时时间
client.set_options(timeout=100) # 这里是秒
1) 下载 https://pypi.python.org/pypi/suds/0.4
2)解压压缩包,放到Python安装路径下的scripts文件夹下面。
3)然后在cmd命令行中,进入到suds-jurko-0.4.1.jurko.4文件下面,输入命令:python setup.py install
4)注意:如果在py中写代码 import suds报错,就要把suds-jurko-0.4.1.jurko.4文件夹下面的dist、suds以及suds_jurko.egg-info这三个文件夹,拷贝到Lib下面的site-packages路径下面
5)如果from suds.clientimportClient,提示 ImportError:No module named version 最后pip install --upgrade suds-jurko
其实可以一步到位 pip3 install suds-jurko
Python3 用的这个suds-jurko,安装方法跟Python2一样。
https://pypi.python.org/pypi/suds-jurko/0.6
测试:
In [5]: from suds.client import Client
In [6]: client = Client('http://www.webxml.com.cn/webservices/qqOnlineWebServic
...: e.asmx?wsdl')
In [7]: print(client)
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):
In [8]: result=client.service.qqCheckOnline("100000")
In [9]: orubt(result)
---------------------------------------------------------------------------
NameError Traceback (most recent call last)
<ipython-input-9-8d90f0601db2> in <module>()
----> 1 orubt(result)
NameError: name 'orubt' is not defined
In [10]: print(result)
Y
以上测试了获取http://www.webxml.com.cn/webservices/qqOnlineWebService.asmx?wsdl这个地址的方法列表可以看到其中有检查qq是否在线的方法,然后调用检测一个qq号码是否在线进行测试
另外如果获取数据量比较大,可以在获取数据之前设置超时时间
client.set_options(timeout=100) # 这里是秒
查看所有属性:
In [11]: print(client.options)
Definitions:
cache: classes=(<class 'suds.cache.Cache'>,), default=<suds.cache.NoCach
e object at 0x00000000052385C0>
documentStore: classes=(<class 'suds.store.DocumentStore'>,), default=<s
uds.store.DocumentStore object at 0x0000000004D18E10>
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 0x0000000005249208>)
('documentStore', <suds.store.DocumentStore object at 0x0000000004D18E10
>)
('extraArgumentErrors', True)
('faults', True)
('transport', <suds.transport.https.HttpAuthenticated object at 0x000000
0005238EB8>)
('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.NoCach
e object at 0x00000000052385C0>
documentStore: classes=(<class 'suds.store.DocumentStore'>,), default=<s
uds.store.DocumentStore object at 0x0000000004D18E10>
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 0x0000000005249208>)
('documentStore', <suds.store.DocumentStore object at 0x0000000004D18E10
>)
('extraArgumentErrors', True)
('faults', True)
('transport', <suds.transport.https.HttpAuthenticated object at 0x000000
0005238EB8>)
('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)