python的suds的soap(webserivce)客户端编程

参考网站:http://efreedom.com/Question/1-5769128/Soap-Client-Using-Suds

suds 在进行webservice 调用的时候,简单的webservice模式,通过string,int,boolean 可以实现简单的参数传递

但进行复杂参数传递的时候需要用到suds的工厂化处理方式来处理未能识别或者复杂的数据结构

下面介绍两种方式:

1 only one 复杂模式

ArrayOfIntType/ArrayOfStringType

from suds.client import Client

c = Client(url)

#int 形array

ArrayOfIntType = c.factory.create('ArrayOfIntType')

ArrayOfIntType.int = [1,2,3,4,5,6,7] #int形array数组

#string形array

ArrayOfStringType = c.factory.create('ArrayOfStringType')

ArrayOfStringType.string = [‘www’,'dddd','eeeee'] #string形array数组

2 ArrayOfArrayOfIntType/ArrayOfArrayOfStringType 这种多重模式array形式的时候

from suds.client import Client

c = Client(url)

#int 复合形数组

ArrayOfArrayOfIntType = self.client.factory.create('ArrayOfArrayOfIntType')

ArrayOfArrayOfIntType.ArrayOfIntType = []

for L in [[1,2], [5,6]]:
    ArrayOfIntType = c.factory.create('ArrayOfIntType') #定义子类型
    ArrayOfIntType.int = L
    ArrayOfArrayOfIntType.append(ArrayOfIntType)      #将子类型增加到上层类型

#string 复合数组

ArrayOfArrayOfStringType = self.client.factory.create('ArrayOfArrayOfStringType')

ArrayOfArrayOfStringType.ArrayOfStringType = []

for S in [['1','2'], ['5','6']]:
    ArrayOfStringType = c.factory.create('ArrayOfStringType') #定义子类型
    ArrayOfStringType.string = S
    ArrayOfArrayOfStringType.append(ArrayOfStringType)      #将子类型增加到上层类型

以上资料参考网站:http://efreedom.com/Question/1-5769128/Soap-Client-Using-Suds

                                    http://stackoverflow.com/questions/2418172/soap-python-suds#

3 python输出最后请求的webservce xml格式方式 或 获取最后xml格式的方式

#输出最后数据
result=c.last_sent()
#输出最后接受的数据
result=c.last_received()

4 打印webserice 的结构可以使用简单的print

print c

显示的结构格式如下:
Suds - version: 0.4.4 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




  • 0
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值