使用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') # 需要一一對應