python调用webservice的两种方法

  • suds调用
  • requests调用

因为工作关系,长期对接各种三方的接口(视图,webservice,队列)。期间遇见了各种报错,也查阅了许多资料,特此记录webservice对接领域长期以来积累的经验,展示两种webservice对接的方式,以及异常排查的思路,一般能解决大部分wsdl符合要求的接口。


suds调用

suds是python的一个轻量型python拓展包,它可以快速的解析wsdl文件,结构化的返回接口的方法,调用方式及入参类型。

  • suds快速生成webservice的client调用
import suds
from suds.client import Client
url = "http://localhost/method?wsdl" #注意入参url为接口的wsdl地址
client = Client(url)
#输出接口的结构化描述
print client
----------------------------------
#调用接口方法,非常简单
result = client.service.dosomething('2019-01-01','2019-01-02')
print result

返回的client结构化描述如下图,methods类里即为接口的方法,入参方式,以及入参类型。

  • 有的接口入参形式是自定义格式,比如嵌套类型的字典,这时我们可以通过suds工厂来创建特殊入参类型
Input = client.factory.create('SomeNme')
Input.name = 'xxx'
Input.sex = 'xxx'
Input.date = datetime.now().strftime("%Y-%m-%d")
result=client.service.dosomething(Mheader)
  • 异常排查。通常建议开启日志,查看调用过程种传输的信息

1.查看调用过程中发生的soap报文和接收到的soap报文:

print client.last_sent() #发送
print client.last_received() #接收

2.调用失败时通常只有last_sent(),received多接收到none,此时可查看传输中的日志,输出到终端:

import sys
logger = logging.getLogger('suds.transport.http')
logger.setLevel(logging.DEBUG)
logger.addHandler(logging.StreamHandler(sys.stdout))

3.查看整个调用过程中的日志信息,以排查解析xml时的not type错:

import sys
import logging
logger = logging.getLogger('suds')
logger.setLevel(logging.DEBUG)
logger.addHandler(logging.StreamHandler(sys.stdout))

4.异常捕捉

try:client.service.xxx_func(*args, **kwargs)
except suds.WebFault,ex:print ex.fault        print ex.document

学习自:https://www.cnblogs.com/Tommy-Yu/p/5567091.html


requests调用

webservice通常的请求过程都是通过客户端向服务端发送soap数据包,以得到服务端发回的数据包在解析。所以此过程通常可以使用http的post请求来模拟。不会看wsdl也没关系,可以requests和soapui配合使用。
此方法可以针对于没有看过suds源码,以及使用suds调用接口时异常报错,查询stackoverflow也无法找到答案的情况

  • 核心代码为:
import requets
response = requests.post(self.url, headers=self.headers, data=send_data, verify=False)
#返回结果为
result = response.content

headers和data都可以通过suds的日志,或通过soapui模拟得到

python调用webservice相关推荐

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

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

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

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

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

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

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

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

  5. python调用webservice接口实例_python调用webservice接口的实现

    使用suds这个第三方模块 from suds.client import Client url = 'http://ip:port/?wsdl' cilent=Client(url) print c ...

  6. python调用webservice接口实例_python发布webservice接口

    cd soaplib python setup.py install 2.服务端代码 import soaplib from soaplib.core.service import rpc, Defi ...

  7. python如何调用图片-python调用图片

    广告关闭 腾讯云11.11云上盛惠 ,精选热门产品助力上云,云服务器首年88元起,买的越多返的越多,最高返5000元! python本身也有识别图片转文字的框架,但是相比调用接口,识别的精度就略显不行 ...

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

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

  9. python使用suds来调用webservice

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

最新文章

  1. 有什么产品工作,可以每天摸胸,还不用冒生命危险?
  2. 麻省理工学院计算机工程专业排名,2020美国计算机工程研究生专业排名TOP20
  3. 转载--c语言宏定义(1)
  4. python进阶:搞懂装饰器和切面编程
  5. ces测试数据测试ces测试数据测试ces测试数据测试ces测试数据测试ces测试数据测试ces测试数据测试ces测试数据测试再次测试
  6. 当我不再依赖你的时候说说_不要依赖任何人说说 不要指望别人的经典话
  7. Druid学习之路 (四)Druid的数据采集格式
  8. CQRS之旅——旅程6(我们系统的版本管理)
  9. yaml 数组_使用 YAML 保存游戏数据 !
  10. 冰点下载器手机版apk_冰点文库下载器安卓手机版
  11. java ajax sendrequest()请求_AJAX – 向服务器发送请求 | 菜鸟教程
  12. 腾讯云实验室 Gitea 互动教程上线啦
  13. Application Transport Security has blocked a cleartext HTTP (http://) resource load since it is inse
  14. 程序员架构师修行之路
  15. 高校房产管理系统应具备哪些基本功能?
  16. 众多的.ts文件、.key文件、.m3u8文件,合并成一个完整的mp4格式的视频
  17. 使用O2OA二次开发搭建企业办公平台(十三)流程开发篇:报销审批流程表单开发...
  18. 【视频处理】视频拼接视频缝合手把手教你
  19. 一个老程序员写给换行业的朋友的信
  20. yocto系列讲解[理论篇]56 - poky下目录结构

热门文章

  1. 本性上确界essential supremum
  2. 一张图深入的理解FP/FN/Precision/Recall
  3. MTK去除lk冗余log
  4. CICl滤波器(含补偿滤波器)半带滤波器 ——数字滤波器
  5. 锂离子电池的国际标准和国家标准(含安全方面IEC62133等,IEC61060电性能和UN38.3 GB4943运输存储标准)
  6. rootfs根文件系统扫盲
  7. C++的lib文件到底是什么
  8. 本题要求实现一个函数,输入一个正整数n(1<=n<=9),输出n行空心的数字金字塔。要求定义和调用函数hollow_pyramid(n)打印出n行空心的数字金字塔。
  9. 破产大潮下,胡玮炜套现 15 亿,ofo 戴威欠 10 亿还不起。同运为何不同命?
  10. bbed删除行记录,跳过bootstrap$的某些索引创建