设为首页 收藏本站
查看: 1097|回复: 0

[经验分享] Python访问WebService接口

[复制链接]

尚未签到

发表于 2017-4-28 13:27:46 | 显示全部楼层 |阅读模式
1.使用Python访问WebService远程方法
1)安装Sud库 https://fedorahosted.org/suds/ 下载 tarball
2)示例代码如下:


from suds.client import Client
from suds.transport.https import HttpAuthenticated
t = HttpAuthenticated(username=’admin’,password=’123′)
test = Client(‘http://xxx.xxx.xx.xxx:8080/WebService/ws/DeviceManageService?wsdl',transport=t)
print test  #查看远程方法
print test.service.getDeviceList() #getDeviceList为WebService提供的接口
 
2. 构造WebService接口需要的参数
 1)简单调用,无参数的情况

   client=Client(url)
client.service.fun()
 
 2)传递对象参数(方法1)
  通过查看远程方法,发现fun 接口的参数类型为 paramType,有p1,p2两个属性


   client=Client(url)
m=client.factory.create('paramType')
m.p1="param 1"
m.p2="param 2"
result=client.service.fun(m)
print result
 
3)传递对象参数(方法2)


    client=Client(url)
m={"p1":param 1","p2":"param 2"}
print client.service.fun(m)
 
4)suds把异常包装成元组输出


   client=Client(url)
client=Client(url, faults=False)
result=client.service.funIn("error param")
print result
 
 
3. 看懂WebService的WSDL描述文件
1)查看WebService提供的接口

标签 wsdl:operation 中的 name 表示提供的接口名称,每个接口包含 wsdl:input 和 wsdl:output 两个部分,可以理解为输入消息和输出消息。
wsdl:input 相当于接口的输入参数,wsdl:output 相当于接口的返回结果。

2)查看WebService提供的接口的参数

找 wsdl:message 标签中 与 接口名称相同的项,比如:

<wsdl:message name="getDevice">
<wsdl:part element="tns:getDevice" name="parameters"> </wsdl:part>
</wsdl:message>
其中关键词  element="tns:getDevice" ,name="parameters"
 
继续查看 xs:complexType 标签中与"tns:getDevice" 冒号后面的字符相匹配的标签,比如:

<xs:complexType name="getDevice">
<xs:sequence>
<xs:element minOccurs="0" name="deviceId" type="xs:string"/>
</xs:sequence>
</xs:complexType>
 
xs:element标签描述的内容即参数的属性,这里是要求输入deviceId,参数类型为string。

即接口原型为 getDevice(string deviceId)

3)如果xs:element 标签的type的值包含"tns:“前缀(如type="tns:param"),说明这个参数是个复合结构,需要继续查找xs:complexType标签中 与”param“相匹配的标签项,依次类推。

 

运维网声明 1、欢迎大家加入本站运维交流群:群②:261659950 群⑤:202807635 群⑦870801961 群⑧679858003
2、本站所有主题由该帖子作者发表,该帖子作者与运维网享有帖子相关版权
3、所有作品的著作权均归原作者享有,请您和我们一样尊重他人的著作权等合法权益。如果您对作品感到满意,请购买正版
4、禁止制作、复制、发布和传播具有反动、淫秽、色情、暴力、凶杀等内容的信息,一经发现立即删除。若您因此触犯法律,一切后果自负,我们对此不承担任何责任
5、所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其内容的准确性、可靠性、正当性、安全性、合法性等负责,亦不承担任何法律责任
6、所有作品仅供您个人学习、研究或欣赏,不得用于商业或者其他用途,否则,一切后果均由您自己承担,我们对此不承担任何法律责任
7、如涉及侵犯版权等问题,请您及时通知我们,我们将立即采取措施予以解决
8、联系人Email:admin@iyunv.com 网址:www.yunweiku.com

所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其承担任何法律责任,如涉及侵犯版权等问题,请您及时通知我们,我们将立即处理,联系人Email:kefu@iyunv.com,QQ:1061981298 本贴地址:https://www.yunweiku.com/thread-370491-1-1.html 上篇帖子: python获得当前时间等 下篇帖子: Python中的字典索引
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

扫码加入运维网微信交流群X

扫码加入运维网微信交流群

扫描二维码加入运维网微信交流群,最新一手资源尽在官方微信交流群!快快加入我们吧...

扫描微信二维码查看详情

客服E-mail:kefu@iyunv.com 客服QQ:1061981298


QQ群⑦:运维网交流群⑦ QQ群⑧:运维网交流群⑧ k8s群:运维网kubernetes交流群


提醒:禁止发布任何违反国家法律、法规的言论与图片等内容;本站内容均来自个人观点与网络等信息,非本站认同之观点.


本站大部分资源是网友从网上搜集分享而来,其版权均归原作者及其网站所有,我们尊重他人的合法权益,如有内容侵犯您的合法权益,请及时与我们联系进行核实删除!



合作伙伴: 青云cloud

快速回复 返回顶部 返回列表