使用suds-py3调用webservice WSDL接口

应用场景:我们需要通过Python调用webservice的接口,这需要使用到第三方库suds,这篇文章介绍使用suds-py3调用webservice 接口的方法和步骤.

一、安装suds
 如果在python2环境下安装suds,需要先安装client,命令如下:

# python2安装命令
pip install client
pip install suds

在python3环境下直接安装suds-py3,即可使用,命令如下:

# python3安装命令
pip install suds-py3

二、使用suds连接webservice

这里有两个公网的webservice可以供测试使用.

查看QQ号码登录状态的webservice: http://www.webxml.com.cn/webservices/qqOnlineWebService.asmx?wsdl

查看手机号码归属地的webservice: http://ws.webxml.com.cn/WebServices/MobileCodeWS.asmx?WSDL

本文在Python3下演示,用查手机号码归属地的公网webservice做测试:

from suds.client import Clienturl = 'http://ws.webxml.com.cn/WebServices/MobileCodeWS.asmx?WSDL'
client = Client(url)
print(client)

从suds库的client模块中导入Client类,创建Client对象来连接webservice的url,只有连接通了,才能通过连接对象client调用接口
注意:url必须以 "?wsdl" 结尾才能访问(不区分大小写),我们工作中的url可能是由其他语言的程序员提供的,他们使用时可能没有结尾的"?wsdl",使用Python调用时要自己加上

运行结果:


print输出了client对象,可以获得webservice的相关信息:

1.可以点击访问:  http://WebXml.com.cn/ (访问提供当前的Web Service的网站http://WebXml.com.cn/,这个网站提供了一些公开的Web Service, 如:手机号归属地查询,城市天气预报,验证码图片等...),在网站点击''WEB服务'',再点"显示全部Web Serbvces",复制WSDL后的url,即可找到该网站提供的所有Web Service服务url,上面的两个url即从这里获取到的

注意:如果您调用的是自己的url,这里就是为您提供Web Service的网站,而不是http://WebXml.com.cn/

2.重点从webservice信息里面找到Methods,Methods下列出的方法即为可以调用的接口,调用方法: client.service.方法名(参数)

三、调用webservice中的任务,返回数据
1.从client的信息中可以看到有两个Method,如:
getDatabaseInfo()
getMobileCodeInfo(xs:string mobileCode, xs:string userID, )
注意:在传递参数时,要根据webservice中定义的参数类型,是否必传等要求,传递符合条件的参数,如果需要传递json类型的数据,键和值均需转成字符串,可使用json.dumps()将复杂数据(如列表字典多层嵌套的数据)转成字符串。
2.通过client对象调用每个接口方法,传入符合WSDL定义的参数

调用method:
getDatabaseInfo()不需要传参数,直接client.service.getDatabaseInfo()调用即可

getMobileCodeInfo()需要两个字符串参数mobileCode和userID, mobileCode是必填, userID可以不填

调用: client.service.getMobileCodeInfo(mobileCode=1802584****)或 client.service.getMobileCodeInfo(1802584****)

调用接口代码:

from suds.client import Clienturl = 'http://ws.webxml.com.cn/WebServices/MobileCodeWS.asmx?WSDL'
client = Client(url)
# print(client)
print(client.service.getMobileCodeInfo(mobileCode=1802584****))

3.返回WSDL中定义的Response数据,可查看接口WSDL中的返回参数定义,查看接口是否调用成功,返回数据信息如下:

有些号码可能会提示:没有此号码记录,这是网站上没有更新数据,您(在您的通讯录中)换一个号码测试即可

现在,已经可以通过suds调用webservice了,您只要找到您自己要调的url,把url换成自己的url即可

四、WSDL介绍

WSDL是网络服务描述语言 (Web Services Description Language),是使用XML写的用于描述Web Services,以及如何访问 Web Services的文档,我们可以简单的这样理解:WSDL的作用类似于接口文档,告诉调用者有哪些接口,需要哪些参数,参数是什么类型,返回什么样的值.

如果需要更理解WSDL,可以自己找一下教程,同时再看一下XML和SOAP的相关内容.

直接访问上面的WSDL url显示信息如下:

学了WSDL的知识,就可以看到上面的信息就是对Web Service的接口的描述.

使用suds-py3调用webservice WSDL接口相关推荐

  1. Java调用webservice.asmx接口.

    直接上代码: 1 package utils; 2 3 import java.net.MalformedURLException; 4 import java.rmi.RemoteException ...

  2. 在unity调用WebService的接口方法

    在unity 调用WebService的soap接口方法总结: 1,wsdl工具 2,www的post方法 第一种在iOS无法发布(Android和PC都可以),第二种亲测可以在iOS模拟器上运行 第 ...

  3. python使用suds来调用webservice

    对于python仅作为客户端调用webservice的情况,推荐使用suds库来完成,比起zsi,soapy之类,它可以说是相当轻量级,使用非常方便. 安装suds建议使用easy_insall来做. ...

  4. java xfire指定参数名_Java编程中使用XFire框架调用WebService程序接口

    JAVA调用webservice,当你刚开始接触的时候你会觉得它是一个恶梦,特别是没有一个统一的标准实现,比起.net的那些几步就可以完成的webservice实现,我们看着JAVA的实现真是伤心啊. ...

  5. python调用webservice_python使用suds来调用webservice

    对于python仅作为客户端调用webservice的情况,推荐使用suds库来完成,比起zsi,soapy之类,它可以说是相当轻量级,使用非常方便. 安装suds建议使用easy_insall来做. ...

  6. java httppost wsdl_Java使用HttpUrlConnection调用webService(wsdl)

    首先需要下载工具https://pan.baidu.com/s/1XQ-VubxcPFoqwGm7wierHg 下载成功后解压打开exe程序,在wsdl endpoint中输入你wsdl的地址,点击g ...

  7. Python 调用WebService接口出错-suds.transport.TransportError: HTTP Error 401: Unauthori

    使用Python调用WebService接口出现"suds.transport.TransportError: HTTP Error 401: Unauthorized"错误. 问 ...

  8. python suds_python使用suds调用webservice接口的方法

    最近做接口对接,遇到了.net开发的webservice接口,因为python第一次与webservice对接,连问带查,最后使用suds库来实现了 1.安装suds mac: sudo pip in ...

  9. android调用web接口,Android调用webservice 接口

    以查询手机号码归属地的Web service为例,它的wsdl为 1 在Android项目中导入??Ksoap2-android jar第三方jar包?? 2 Activity代码 public cl ...

最新文章

  1. 前端学习(2622):过滤器进行操作
  2. 前端学习(1903)vue之电商管理系统电商系统之调用api添加用户
  3. 【Python】shutil内置模块复制和重命名文件
  4. iterator remove_Iterator与fast-fail机制
  5. java使用httpclient封装post请求和get的请求
  6. kali rpm 安装方法_linux下制作安装rpm包的方法
  7. 天公不作美 SpaceX再次推迟星链卫星发射
  8. 极客大学产品经理训练营 产品文档和原型 作业5
  9. nbu备份mysql_NBU之 SQL 的备份和恢复
  10. php批量查qq号码是否冻结,PHP批量检查网站的sitemap是否存在
  11. 交换机组合超级计算机,图解:世界上最快的超级计算机Roadrunner
  12. 一个古老故事--线程和线程池的故事
  13. 紫光云服务器芯片,紫光云与新华三半导体共建芯片设计云2.0 携手打造一站式云端芯片平台...
  14. ipv4ipv6导致微信H5支付问题
  15. python同花顺股票实时数据_web实时股票数据展示
  16. 论ICT技术与数据中心的关系
  17. 【合集】Jerry Wang 2018~2021 四年期间的 SAP 技术文章合集
  18. xshell session导入mobaxsterm
  19. OGC:WMS,WFS,WMTS,WCS的区别
  20. 【转】互联网金融产品的设计思考【腾讯实践干货】

热门文章

  1. glib g_main_loop的简单例子
  2. mysql中常见的数据库对象
  3. 不谈程序,谈发展,推荐一些励志书,也许可以改变你的困境
  4. 聚米优选:为什么我的视频质量越来越好,却还是上不了热门?
  5. 【Grokking the System Design】- 设计一个 TinyURL服务
  6. 聊聊大促秒杀系统设计
  7. chgrp r mysql_Linux命令:chmod、chgrp、chown的区别
  8. 短信发送验证码,每天只限三次
  9. 心理过程中的认知过程,包括注意吗?|小白心理-312/347考研答疑
  10. 计算车间每日产量达标率