python使用suds调用webservice接口的方法
作者:轻舟漫溯 发布时间:2022-12-22 06:44:18
标签:python,suds,webservice
最近做接口对接,遇到了.net开发的webservice接口,因为python第一次与webservice对接,连问带查,最后使用suds库来实现了
1.安装suds
mac: sudo pip install suds
linux: easy_install suds
也可以通过去官网下载suds代码,再本地安装
2. 引用初始化
>>> from suds.client import Client
>>> url = 'http://www.gpsso.com/webservice/kuaidi/kuaidi.asmx?wsdl'
>>> client = Client(url)
>>> print client
Suds ( https://fedorahosted.org/suds/ ) version: 0.4 GA build: R699-20100913
Service ( Kuaidi ) tns="http://gpsso.com/"
Prefixes (1)
ns0 = "http://gpsso.com/"
Ports (2):
(KuaidiSoap)
Methods (1):
KuaidiQuery(xs:string Compay, xs:string OrderNo, )
Types (1):
ApiSoapHeader
(KuaidiSoap12)
Methods (1):
KuaidiQuery(xs:string Compay, xs:string OrderNo, )
Types (1):
ApiSoapHeader
>>>
对url做一下说明,一般要确认给的wsdl地址是正常模式,地址打开一般为xml格式而有些服务是做成了html模式,这个会导致实例化或者调用方法的时候出现xml解析异常。
3. 方法调用
2中的client打印出来就可以知道,该webserviece服务定义了什么方法,方法需要什么参数,声明了什么信息等(如头信息,ApiSoapHeader),方法可以通过client.serviece直接调用
>>> client.service.KuaidiQuery(Company='EMS', OrderNo='1111')
(KuaidiQueryResult){
API =
(API){
RESULTS = "0"
MESSAGE = "接口查询成功"
}
}
>>>
而声明的头信息,则可以用factory的方式去实例化
>>> header = client.factory.create('ApiSoapHeader')
>>> print header
(ApiSoapHeader){
APICode = None
APIKey = None
}
>>> header.APICode = '123'
>>> header.APIKey = 'key123'
>>> print header
(ApiSoapHeader){
APICode = "123"
APIKey = "key123"
}
>>>
头信息需要用set_options方法设置
>>>
>>> client.set_options(soapheaders=[header,])
>>>
如果没有描述的头信息,可以通过查阅文档https://fedorahosted.org/suds/wiki/Documentation查询custom soap headers来设置
来源:https://www.cnblogs.com/nottobe/p/5718823.html


猜你喜欢
- 一、concurrent模块的介绍concurrent.futures模块提供了高度封装的异步调用接口ThreadPoolExecutor:
- 有时候会碰到需求,将字典来反转,即:字典中的键作为值,而字典中的值作为键。对于字典比较小,可以使用普通方法方法一:使用普通方法转换>&
- 前面一篇文章有说过,利用scrapy来爬取图片,是为了对图片数据进行分类而收集数据。本篇文章就是利用上次爬取的图片数据,根据图片的颜色特征来
- 对于html中的一些元素注册事件的方式有多种 第一种: <script> function test() { alert(&qu
- 在很多的情况下,在编写存储过程中往往会用到数组,但是mysql中存储过程传入参数并没有可以直接传入数组的方法。在这种情况下我们只能退而求之或
- 本文实例讲述了Python3最长回文子串算法。分享给大家供大家参考,具体如下:1. 暴力法思路:对每一个子串判断是否回文class Solu
- 这是一个系列文章,主要分享python的使用建议和技巧,每次分享3点,希望你能有所收获。1 如何创建指定长度且有特定值的list不推荐方式l
- FP代表频繁模式(Frequent Pattern),算法主要分为两个步骤:FP-tree构建、挖掘频繁项集。FP树表示法FP树通过逐个读入
- 春节休息了几天,今天上班第一天,最近混twitter混得比较多,经常要压缩URL,以前做了个书签用http://is.gd/压缩,后来发现了
- 最近写运维自动化平台,需要用python写很多的小功能模块。这里就分享一个用Python的paramiko来实现功能的一段代码:复制远程服务
- 在实际使用numpy时,我们常常会使用numpy数组的-1维度和”:”用以调用numpy数组中的元素。也经常因为数组的维度而感到困惑。总体来
- 1 问题描述本文对建立好的复合索引进行排序,并取记录中非索引字段,发现索引不生效,例如,有如下表,DDL语句为:CREATE TABLE `
- Jupyter Notebook本身是默认使用一种Anaconda中root目录下的Python环境的,如果想使用其它的虚拟环境,还需要通过
- 以前写的很简单,只有几句话,最近发现本文是本博客阅读量最大的一篇文章,觉得这样有种把人骗进来的感觉,于是又细化了一些。如果还有不好的地方,欢
- 1.下载egit插件打开Eclipse,git需要eclipse授权,通过网页是无法下载egit的安装包的。在菜单栏依次打开eclipse→
- 希望对您有所帮助!推荐:[精品]ASP中常用的22个FSO文件操作函数 <%@ Language=VBScript
- 在前面的DRF系列教程中,我们以博客为例介绍了序列化器, 使用基于类的视图APIView和ModelViewSet开发了针对文章资源进行增删
- 近期有个需要进行音频转码的小任务需要用到ffmpeg,安装和使用的过程中遇到了很多问题没有办法解决,从网上找了各种教程也是一言难近,本文二哥
- 条件语句主要有三种形式:分别为if语句、if...else语句和if...elif...else 语句1.if语句条件语句中常用的比较运算符
- 前言在想题材之际,打开私信,有许多萌新&小伙伴询问我之前写的一篇《python爬取天气预报数据,并实现数据可视化》中的bug怎么解决