python使用suds调用webservice接口的方法


Posted in Python onJanuary 03, 2019

最近做接口对接,遇到了.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来设置

以上这篇python使用suds调用webservice接口的方法就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持三水点靠木。

Python 相关文章推荐
Python中map和列表推导效率比较实例分析
Jun 17 Python
python实现感知器
Dec 19 Python
深入分析python中整型不会溢出问题
Jun 18 Python
解决python通过cx_Oracle模块连接Oracle乱码的问题
Oct 18 Python
浅谈python的dataframe与series的创建方法
Nov 12 Python
关于python多重赋值的小问题
Apr 17 Python
对Django的restful用法详解(自带的增删改查)
Aug 28 Python
python实现图片二值化及灰度处理方式
Dec 07 Python
如何在django中运行scrapy框架
Apr 22 Python
基于Python爬取51cto博客页面信息过程解析
Aug 25 Python
matplotlib事件处理基础(事件绑定、事件属性)
Feb 03 Python
Python 解决空列表.append() 输出为None的问题
May 23 Python
Python调用服务接口的实例
Jan 03 #Python
Python2和Python3之间的str处理方式导致乱码的讲解
Jan 03 #Python
python requests 库请求带有文件参数的接口实例
Jan 03 #Python
Python图像处理之颜色的定义与使用分析
Jan 03 #Python
Python在图片中插入大量文字并且自动换行
Jan 02 #Python
python 输出所有大小写字母的方法
Jan 02 #Python
Python高斯消除矩阵
Jan 02 #Python
You might like
PHP大批量数据操作时临时调整内存与执行时间的方法
2011/04/20 PHP
php求两个目录的相对路径示例(php获取相对路径)
2014/03/27 PHP
ThinkPHP框架实现session跨域问题的解决方法
2014/07/01 PHP
对于ThinkPHP框架早期版本的一个SQL注入漏洞详细分析
2014/07/04 PHP
php去除html标记的原生函数详解
2015/01/27 PHP
JS 自动安装exe程序
2008/11/30 Javascript
js 纯数字不重复排列的另类方法
2010/07/17 Javascript
node.js使用npm 安装插件时提示install Error: ENOENT报错的解决方法
2014/11/20 Javascript
jQuery实现表格行和列的动态添加与删除方法【测试可用】
2016/08/01 Javascript
12306 刷票脚本及稳固刷票脚本(防挂)
2017/01/04 Javascript
js实现简易垂直滚动条
2017/02/22 Javascript
Vue渲染函数详解
2017/09/15 Javascript
echarts鼠标覆盖高亮显示节点及关系名称详解
2018/03/17 Javascript
详解React之key的使用和实践
2018/09/29 Javascript
Vue实现简易翻页效果源码分享
2018/11/08 Javascript
浅谈JS和jQuery的区别
2019/03/27 jQuery
浅谈webpack和webpack-cli模块源码分析
2020/01/19 Javascript
Python注释详解
2016/06/01 Python
Python列表切片用法示例
2017/04/19 Python
python中实现k-means聚类算法详解
2017/11/11 Python
Python使用django框架实现多人在线匿名聊天的小程序
2017/11/29 Python
用Python写一个模拟qq聊天小程序的代码实例
2019/03/06 Python
Python企业编码生成系统总体系统设计概述
2019/07/26 Python
如何基于python生成list的所有的子集
2019/11/11 Python
Python实现壁纸下载与轮换
2020/10/19 Python
Python实现异步IO的示例
2020/11/05 Python
Johnston & Murphy官网: 约翰斯顿·墨菲牛津总统鞋
2018/01/09 全球购物
法国一家芭蕾舞鞋公司:Repetto
2018/11/12 全球购物
应届生求职自荐信范文
2014/04/07 职场文书
学校安全防火方案
2014/06/07 职场文书
校园绿化美化方案
2014/06/08 职场文书
2014年安全管理工作总结
2014/12/01 职场文书
2014小学二年级班主任工作总结
2014/12/05 职场文书
2016年党员干部公开承诺书
2016/03/24 职场文书
Python基础详解之描述符
2021/04/28 Python
app场景下uniapp的扫码记录
2022/07/23 Java/Android