python调用webservice接口的实现

yipeiwu_com7年前Python基础

使用suds这个第三方模块

from suds.client import Client
url = 'http://ip:port/?wsdl'
cilent=Client(url)
print cilent 

查看webservice接口的具体信息:

调用接口方法,通常 client.service.methodname

实际测试过程中遇到的坑:

1、tns 值为Localhost

之前查看接口信息时,未发现tns="http://Localhost:4567/Interface.wsdl",这个被设置成Localhost,导致通过接口调用时,只能在webservice接口本地服务器上才能调用成功,其他服务器调用时,接口中的方法都无法获取。大坑!

解决方法:修改webservice接口对应的wsdl文件 Interface.wsdl,将其中的Localhost改成具体ip即可。

2、接口方法名不符合python命名规范

比如上述的方法,无法直接这样调用

解决办法:python内置函数getattr 。 getattr(cilent.service,'ser-GetAreaID')('1')

3、接口方法传参

此方法为例

1、方法一:

soap_rep=getattr(soapService, 'ser-SetValue')(nSetFlag=1,nSystemID=1,nRecordNo=440002028,nTableNo=18,cValue='225',UserName='admin')

2、方法二:

soap_rep=getattr(soapService, 'ser-SetValue')(1,1,440002028,18,'225','admin') # 需要一一对应

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持【听图阁-专注于Python设计】。

相关文章

python字典改变value值方法总结

今天这篇文章中我们来了解一下python之中的字典,在这文章之中我会对python字典修改进行说明,以及举例说明如何修改python字典内的值。废话不多说,我们开始进入文章吧。 首先我们...

修改默认的pip版本为对应python2.7的方法

现在系统中同时有python2.7和python3.5 终端输入python跳出来的也是python2.7的信息 但是输入pip -V跳出来的却是对应于pip3.5的 那么解决办法就是...

Python while 循环使用的简单实例

while循环是在Python中的循环结构之一。 while循环继续,直到表达式变为假。表达的是一个逻辑表达式,必须返回一个true或false值,本文章向码农介绍Python whil...

Python Socket使用实例

Python在网络通讯方面功能强大,学习一下Socket通讯的基本方式 UDP通讯: Server: import socket port=8081 s=socket.socket(...

Django用户认证系统 Web请求中的认证解析

在每个Web请求中都提供一个 request.user 属性来表示当前用户。如果当前用户未登录,则该属性为AnonymousUser的一个实例,反之,则是一个User实例。 你可以通过i...