对于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.简单参数调用

Python代码  

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.复杂参数

Java代码  

person = client.factory.create('Person')
print person  

Java代码

(Person)=  {  phone = []  age = NONE  name(Name) =   {  last = NONE  first = NONE  }  }  

#设置变量

Java代码  

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' 

Python代码  

person.name = name
person.age = 35
person.phone = [phone]  #或者
person.phone.append(phone)  

Java代码  

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.异常处理

Python代码  

client = client(url, faults=False)
result = client.service.addPerson(person)
print result
( 200, person ...)  

更多可以查看官方文档:https://fedorahosted.org/suds/wiki/Documentation,里面还讲了soap头得安全认证,webservice cache等高级话题,有需要可以查看,都比较详细。

转载于:https://www.cnblogs.com/dancesir/p/7927420.html

python使用suds来调用webservice相关推荐

  1. python调用webservice_python使用suds来调用webservice

    对于python仅作为客户端调用webservice的情况,推荐使用suds库来完成,比起zsi,soapy之类,它可以说是相当轻量级,使用非常方便. 安装suds建议使用easy_insall来做. ...

  2. Python 调用WebService接口出错-suds.transport.TransportError: HTTP Error 401: Unauthori

    使用Python调用WebService接口出现"suds.transport.TransportError: HTTP Error 401: Unauthorized"错误. 问 ...

  3. python suds_python使用suds调用webservice接口的方法

    最近做接口对接,遇到了.net开发的webservice接口,因为python第一次与webservice对接,连问带查,最后使用suds库来实现了 1.安装suds mac: sudo pip in ...

  4. python调用webservice接口实例_python调用各种接口,webservice,c接口,com接口,socket协议方法...

    python调用webservice接口(SOAP) (2)调用示例: 需要先安装suds库:pip install suds from suds.client import Client #如果需要 ...

  5. python调用webservice

    python调用webservice的两种方法 suds调用 requests调用 因为工作关系,长期对接各种三方的接口(视图,webservice,队列).期间遇见了各种报错,也查阅了许多资料,特此 ...

  6. Python调用WebService服务 查询天气预报

    文章目录 问题描述 安装 初试 修复Schema 天气预报封装 参考文献 问题描述 Python调用Webservice服务,如WebXml的免费Web服务中的城市天气预报 安装 使用suds库的分支 ...

  7. Python调用webservice服务【suds-py3组件使用】

    先记录一下背景: 工作中一次与其他系统进行接口调用调试时,对方提供了webservice的一套服务文档和调用参数说明.what?webservice?没怎么用过,以为和API形式的调用差不多,但基于尊 ...

  8. 使用suds-py3调用webservice WSDL接口

    使用suds-py3调用webservice WSDL接口 应用场景:我们需要通过Python调用webservice的接口,这需要使用到第三方库suds,这篇文章介绍使用suds-py3调用webs ...

  9. EJBCA 6 通过调用WebService接口增加用户并获取证书

    2019独角兽企业重金招聘Python工程师标准>>> 今天终于搞定通过调用WebService 接口的方式在EJBCA 中增加用户. 本项目完整代码请参见http://git.os ...

最新文章

  1. 关于大型网站技术演进的思考(二十)--网站静态化处理—web前端优化—中(12)...
  2. js检测、控制表单输入必须为中文
  3. ESP8266编译脚本之三
  4. 阿里NIPS 2017论文解读:如何降低TensorFlow训练的显存消耗?
  5. Java获得时间 String与Timestamp互转
  6. 将matlab中数据输出保存为txt或dat格式
  7. 解决6410 WINCE6 应用层调用SetSystemPowerState api关机无效的问题
  8. asp.net core 拦击器制作的权限管理系统DEMO
  9. java and dsl_Groovy语法糖以及DSL
  10. 里的type_拥有Type-C接口等于拥有PD快充?当然不是!
  11. HAProxy+Hive构建高可用数据挖掘集群
  12. 线性代数同济第六版笔记:1-行列式
  13. Windows7硬盘安装Linux
  14. U8如何月结及反结账
  15. MIST浏览器不能连接私有链
  16. RT-Thread ENV工具 pkgs --upgrade 报错:open .config failed
  17. Dining(网络流,拆点, 最大流,详细注释)
  18. PHP学习笔记好(待完善)
  19. (日) 暮苍山兰舟 (小),
  20. opa example

热门文章

  1. Github | Google开源高性能机器学习研究工具Jax
  2. mysql无损复制_MySQL无损复制(转)
  3. 为什么沿梯度方向,函数变化最快???
  4. 基础知识(九)boost+vs2015安装配置
  5. 一阶低通滤波器方程_一阶RC低通滤波器杂记
  6. mysql配置命令_MySQL基本配置命令总结
  7. 渗透测试入门18之信息收集
  8. 渗透测试入门3之隐匿攻击
  9. Android移植的Box2D
  10. oracle表分区设计_ORACLE 分区表的设计