from suds.client import Client
url = 'http://192.168.8.190:8080/cmdbuild/services/soap/Private?wsdl'
client = Client(url)
print client
r=client.service.getCard('Cabinet',2336)
实例化Client后,可以print client来输出次webservice提供的接口,也就是wsdl文件的说明
通过r=client.service.getCard('Cabinet',2336)来调用webservice的getCard接口,并输入参数,print client的输出结果会有每个接口需要输入的参数说明
但是这样连接后,会报错:suds.WebFault: Server raised fault: 'An error was discovered processing the header'
因为cmdbuild需要wsse安全验证
4.wsse安全验证
为client实例设置wsse参数
from suds.wsse import *
from suds.client import Client
url = 'http://192.168.8.190:8080/cmdbuild/services/soap/Private?wsdl'
client = Client(url)
security = Security()
token = UsernameToken('admin', 'admin')
security.tokens.append(token)
client.set_options(wsse=security)
r=client.service.getCard('Cabinet',2336)
UsernameToken的参数是访问的账号和密码
继续运行程序后,可能会报错:suds.WebFault: Server raised fault: 'The security token could not be authenticated or authorized'‘
解决方法是,把cmdb的auth配置文件的force.ws.password.digest参数设置为false,并重启tomcat,auth.conf路径 tomcat/webapps/WEB-INI/conf/auth.conf
import re
from suds.wsse import *
from suds.client import Client
from suds.plugin import MessagePlugin
url = 'http://192.168.8.190:8080/cmdbuild/services/soap/Private?wsdl'
class MyPlugin(MessagePlugin):
def received(self, context):
reply_new=re.findall("