python中用suds调用webservice

19 篇文章 0 订阅
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

测试:
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)


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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

朝闻道-夕死可矣

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值