使用suds-py3调用webservice WSDL接口
使用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接口相关推荐
- Java调用webservice.asmx接口.
直接上代码: 1 package utils; 2 3 import java.net.MalformedURLException; 4 import java.rmi.RemoteException ...
- 在unity调用WebService的接口方法
在unity 调用WebService的soap接口方法总结: 1,wsdl工具 2,www的post方法 第一种在iOS无法发布(Android和PC都可以),第二种亲测可以在iOS模拟器上运行 第 ...
- python使用suds来调用webservice
对于python仅作为客户端调用webservice的情况,推荐使用suds库来完成,比起zsi,soapy之类,它可以说是相当轻量级,使用非常方便. 安装suds建议使用easy_insall来做. ...
- java xfire指定参数名_Java编程中使用XFire框架调用WebService程序接口
JAVA调用webservice,当你刚开始接触的时候你会觉得它是一个恶梦,特别是没有一个统一的标准实现,比起.net的那些几步就可以完成的webservice实现,我们看着JAVA的实现真是伤心啊. ...
- python调用webservice_python使用suds来调用webservice
对于python仅作为客户端调用webservice的情况,推荐使用suds库来完成,比起zsi,soapy之类,它可以说是相当轻量级,使用非常方便. 安装suds建议使用easy_insall来做. ...
- java httppost wsdl_Java使用HttpUrlConnection调用webService(wsdl)
首先需要下载工具https://pan.baidu.com/s/1XQ-VubxcPFoqwGm7wierHg 下载成功后解压打开exe程序,在wsdl endpoint中输入你wsdl的地址,点击g ...
- Python 调用WebService接口出错-suds.transport.TransportError: HTTP Error 401: Unauthori
使用Python调用WebService接口出现"suds.transport.TransportError: HTTP Error 401: Unauthorized"错误. 问 ...
- python suds_python使用suds调用webservice接口的方法
最近做接口对接,遇到了.net开发的webservice接口,因为python第一次与webservice对接,连问带查,最后使用suds库来实现了 1.安装suds mac: sudo pip in ...
- android调用web接口,Android调用webservice 接口
以查询手机号码归属地的Web service为例,它的wsdl为 1 在Android项目中导入??Ksoap2-android jar第三方jar包?? 2 Activity代码 public cl ...
最新文章
- 前端学习(2622):过滤器进行操作
- 前端学习(1903)vue之电商管理系统电商系统之调用api添加用户
- 【Python】shutil内置模块复制和重命名文件
- iterator remove_Iterator与fast-fail机制
- java使用httpclient封装post请求和get的请求
- kali rpm 安装方法_linux下制作安装rpm包的方法
- 天公不作美 SpaceX再次推迟星链卫星发射
- 极客大学产品经理训练营 产品文档和原型 作业5
- nbu备份mysql_NBU之 SQL 的备份和恢复
- php批量查qq号码是否冻结,PHP批量检查网站的sitemap是否存在
- 交换机组合超级计算机,图解:世界上最快的超级计算机Roadrunner
- 一个古老故事--线程和线程池的故事
- 紫光云服务器芯片,紫光云与新华三半导体共建芯片设计云2.0 携手打造一站式云端芯片平台...
- ipv4ipv6导致微信H5支付问题
- python同花顺股票实时数据_web实时股票数据展示
- 论ICT技术与数据中心的关系
- 【合集】Jerry Wang 2018~2021 四年期间的 SAP 技术文章合集
- xshell session导入mobaxsterm
- OGC:WMS,WFS,WMTS,WCS的区别
- 【转】互联网金融产品的设计思考【腾讯实践干货】