對於python僅作為客戶端調用webservice的情況,推薦使用suds庫來完成,比起zsi,soapy之類,它可以說是相當輕量級,使用非常方便。
安裝suds建議使用easy_insall來做。下面是官方的一些例子:
Python代碼
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
Java代碼
(Person)= { phone = [] age = NONE name(Name) = { last = NONE first = NONE } }
#設置變量
phone = client.factory.create('Phone') phone.npa = 202 phone.nxx = 555 phone.number = 1212
Python代碼
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
Python代碼
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等高級話題,有需要可以查看,都比較詳細。