Python的WebService客戶端:Suds

jopen 9年前發布 | 51K 次閱讀 Suds WEB服務/RPC/SOA

"Suds"是一個輕量級,Python的SOAP Web service 客戶端。 

對于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="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.</pre>


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)</pre>

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</pre>

3.異常處理


client = client(url, faults=False)
result = client.service.addPerson(person)
print result
( 200, person ...)
https://bitbucket.org/jurko/suds

 本文由用戶 jopen 自行上傳分享,僅供網友學習交流。所有權歸原作者,若您的權利被侵害,請聯系管理員。
 轉載本站原創文章,請注明出處,并保留原始鏈接、圖片水印。
 本站是一個以用戶分享為主的開源技術平臺,歡迎各類分享!