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实现跳一跳自动跳跃功能

使用Python实现跳一跳自动跳跃功能

1.   OpenCV:模板匹配。    获得小跳棋中心位置 2.   OpenCV:边缘检测。 &nbs...

在Python的Tornado框架中实现简单的在线代理的教程

实现代理的方式很多种,流行的web服务器也大都有代理的功能,比如http://www.tornadoweb.cn用的就是nginx的代理功能做的tornadoweb官网的镜像。 最近,我...

使用pandas把某一列的字符值转换为数字的实例

今天小编就为大家分享一篇使用pandas把某一列的字符值转换为数字的实例,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧 使用map的方法就可以实现把某一列的字符类型的值...

python操作MySQL数据库具体方法

复制代码 代码如下: import MySQLdbtry:    conn=MySQLdb.connect(host='localhost',user='r...

Python实现的一个简单LRU cache

起因:我的同事需要一个固定大小的cache,如果记录在cache中,直接从cache中读取,否则从数据库中读取。python的dict 是一个非常简单的cache,但是由于数据量很大,内...