前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >Python访问WebService接口

Python访问WebService接口

作者头像
py3study
发布2020-01-07 11:53:44
1.9K0
发布2020-01-07 11:53:44
举报
文章被收录于专栏:python3python3

1.使用Python访问WebService远程方法

1)安装Sud库 https://fedorahosted.org/suds/ 下载 tarball 2)示例代码如下:

代码语言:javascript
复制
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)简单调用,无参数的情况

代码语言:javascript
复制
   client=Client(url)
   client.service.fun()

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

代码语言:javascript
复制
   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)

代码语言:javascript
复制
    client=Client(url)
    m={"p1":param 1","p2":"param 2"}
    print client.service.fun(m)

4)suds把异常包装成元组输出

代码语言:javascript
复制
   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 标签中 与 接口名称相同的项,比如:

代码语言:javascript
复制
<wsdl:message name="getDevice">
   <wsdl:part element="tns:getDevice" name="parameters"> </wsdl:part>
</wsdl:message>

其中关键词  element="tns:getDevice" ,name="parameters"

继续查看 xs:complexType 标签中与"tns:getDevice" 冒号后面的字符相匹配的标签,比如:

代码语言:javascript
复制
<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“相匹配的标签项,依次类推。

本文参与 腾讯云自媒体分享计划,分享自作者个人站点/博客。
原始发表:2019-09-10 ,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档