对于python仅作为客户端调用webservice的情况,推荐使用suds库来完成,比起zsi,soapy之类,它可以说是相当轻量级,使用非常方便。
安装suds建议使用easy_insall来做。下面是官方的一些例子:
 
- from suds.client import Client 
- url = 'http://localhost:7080/webservices/WebServiceTestBean?wsdl' 
- client = Client(url) 
- #查看该service提供的方法 
- print client 
- Suds - version: 0.3.3 build: (beta) R397-20081121 
- Service (WebServiceTestBeanService) tns="http://test.server.enterprise.rhq.org/" 
- Prefixes (1): 
- ns0 = "http://test.server.enterprise.rhq.org/" 
- Ports (1): 
- (Soap) 
- Methods: 
- addPerson(Person person, ) 
- echo(xs:string arg0, ) 
- getList(xs:string str, xs:int length, ) 
- getPercentBodyFat(xs:string name, xs:int height, xs:int weight) 
- getPersonByName(Name name, ) 
- hello() 
- testExceptions() 
- testListArg(xs:string[] list, ) 
- testVoid() 
- updatePerson(AnotherPerson person, name name, ) 
- Types (23): 
- Person 
- Name 
- Phone 
- AnotherPerson 
1.简单参数调用
- result = client.service.getPercentBodyFat('jeff', 68, 170) 
- print result 
- result = client.service.getPercentBodyFat(name='jeff', height=68, weight=170) 
- print result 
- #词典 
- d = dict(name='jeff', height=68, weight=170) 
- result = client.service.getPercentBodyFat(**d) 
- print result 
- You have 21% body fat. 
2.复杂参数
- person = client.factory.create('Person') 
- print person 
- (Person)= 
- { 
- phone = [] 
- age = NONE 
- name(Name) = 
- { 
- last = NONE 
- first = NONE 
- } 
- } 
#设置变量
- phone = client.factory.create('Phone') 
- phone.npa = 202 
- phone.nxx = 555 
- phone.number = 1212 
- name = client.factory.create('Name') 
- name.first = 'Elmer' 
- name.last = 'Fudd' 
- person.name = name 
- person.age = 35 
- person.phone = [phone] 
- #或者 
- person.phone.append(phone) 
- try: 
- person_added = client.service.addPerson(person) 
- except WebFault, e: 
- print e 
  在0.3.8以上版本还提供了更简单的调用方式,完美的json
- person = {} 
- #根据对象结构构造json 
- phone = { 
- 'npa':202, 
- 'nxx':555, 
- 'number':1212, 
- } 
- name = { 
- 'first':'Elmer', 
- 'last':'Fudd' 
- } 
- person['name'] = name 
- person['age'] = 35 
- person['phone'] = [phone,] 
- try: 
- person_added = client.service.addPerson(person) 
- except WebFault, e: 
- print e 
3.异常处理
- client = client(url, faults=False) 
- result = client.service.addPerson(person) 
- print result 
- ( 200, person ...) 
更多可以查看官方文档:https://fedorahosted.org/suds/wiki/Documentation,里面还讲了soap头得安全认证,webservice cache等高级话题,有需要可以查看,都比较详细。
python3 请使用
pip3 install suds-jurko
 
 
 
         
         
           
          