Python3 访问 webservice 接口(WSDL+suds 方式)

suds 安装 参考
suds 使用说明
WSDL文件解读 学习
python 学习

上一篇文章整理了 通过request 方式直接访问 webservice 接口并解析结果xml 信息 的方式,基于系统接口安全性的考虑,webservice 的接口不会直接对外开放,会通过wsdl 的封装转换方式对外开放接口,也因此 本次对python 通过 wsdl 的方式访问 webservice 接口进行整理。

1、需要安装suds 依赖工具:

pip install suds

也许使用以上命令执行后会出现如下错误:

(testEnv) ******:~# pip install suds
Collecting sudsDownloading https://files.pythonhosted.org/packages/bc/d6/960acce47ee6f096345fe5a7d9be7708135fd1d0713571836f073efc7393/suds-0.4.tar.gz (104kB)100% |████████████████████████████████| 112kB 95kB/s Complete output from command python setup.py egg_info:Traceback (most recent call last):File "<string>", line 1, in <module>File "/tmp/pip-install-almbxsaw/suds/setup.py", line 20, in <module>import sudsFile "/tmp/pip-install-almbxsaw/suds/suds/__init__.py", line 154, in <module>import clientModuleNotFoundError: No module named 'client'----------------------------------------
Command "python setup.py egg_info" failed with error code 1 in /tmp/pip-install-almbxsaw/suds/

先莫慌,很可能是因为你的python 更新到3以上了,查了些其他朋友的博客:

pip install suds-jurko
//python3.x 后官方更名为: suds-jurko

2、开始编写代码访问url 并打印出 client 结果:

#引入依赖对象
import time
from suds.client import Client
from suds.sudsobject import asdict
#选择webservice 接口 url
#!!!注意,使用前一定要检查 url 是否正常
sap_url_ = "http://localhost/dir/wsdl?p=ic/63e6c57d3"
#编写方法进行访问
def obtain_by_serial(serial, device_id, origin):try:#添加用户认证也是相当简单,当然,如果没有说明文件估计也是丈二的和尚,#我也是找了好久才找到认证用户和密码的正确填写方式client = Client(sap_url_, username='QA', password='AQ123')print(client)except Exception as e:print(e)returndef get_current_timestamp():return int(round(time.time() * 1000))

先调试 print 出client 内容如下 :


Suds ( https://fedorahosted.org/suds/ )  version: 0.6Service ( SY_OBService ) tns="urn:QA:pi:K2:Zget_equi"Prefixes (2)ns0 = "urn:sap-com:document:sap:rfc:functions"ns1 = "urn:sap-com:document:sap:soap:functions:mc-style"Ports (2):(HTTP_Port)Methods (1):Zget_equi_SY_OB(ns1:ZInput PiInput)Types (22):ns1:ZInput

由上面的打印内容 可以看出service 下面的 method 部分 即接口方法名和参数 以及参数类型

Zget_equi_SY_OB(ns1:ZInput PiInput)

即调用方法名为:Zget_equi_SY_OB
参数类型为:ZInput
参数名为:PiInput

3、继续构造参数,传参调用接口方法:

#!!参数的具体类型和结构,需要阅读 WSDL 文件 ,根据 WSDL 内容进行构造


def obtain_by_serial(serial, device_id, origin):try:client = Client(sap_url_, username='P8XAMP', password='00sGks3Zsd#D')print(client)#!!!!!参数的具体类型和结构,需要阅读 WSDL 文件 ,根据 WSDL 内容进行构造ZInput = {'Messageid': str(get_current_timestamp()),'Doc': {'item': {'Equnr': device_id,'Sernr': serial,'Buffer1': '','Buffer2': '','Buffer3': '','Buffer4': '','Buffer5': '','Buffer6': '','Buffer7': '','Buffer8': '','Buffer9': '','Buffer10': '',}}}#传参调用接口response = client.service.Zget_equi_SY_OB(ZInput)#打印返回结果print(response)except Exception as e:print(e)return

至此 就结束了

以上均为自己采坑记录,如有错误还希望留言指出 i!@^_^@!i

Python3 访问 webservice 接口(WSDL+suds 方式)相关推荐

  1. 如何访问webService接口

    在上篇的文章中我们接触到如何来编写webService接口,这篇文章我们将讲述的是如何来访问webService接口 首先比如这样的一个接口:http://127.0.0.1:11111/weathe ...

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

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

  3. 微信小程序访问WebService接口返回500错误解决过程

    背景:     新手,第一次尝试使用微信小程序访问WebService接口.     使用Microsoft Visual Studio新建了一个WebService项目,发布后,按照常规流程部署到I ...

  4. webservice xml java_java访问WebService接口返回xml

    [      今天为了java webservice 为了调用NET,真是累死了,搞了整整一天.最后才搞定.唉,在网上搜了半天的资料,没有一个提供了正确的答案,都是抄来抄去的,或者高手们都太低调 pa ...

  5. webService接口wsdl以byte[]方式上传附件

    服务端声明 @WebService(serviceName = "CreateKnwlFileService") public class CreateKnwlFile {/* 接 ...

  6. C# 访问WebService接口示例

    工作时遇到需要请求客户的接口返回数据,要求使用WebService,借此机会记录一下. 一.什么是WebService? 简单来说: WebService即web服务,是一种跨编程语言.跨操作系统平台 ...

  7. 使用HttpURLConnection+AsyncTask访问webservice接口(返回json字符串)

    现在很多APP程序网络通信都是基于http的,数据格式我访问常常使用如下配置, DEMO下载地址:http://www.eoeandroid.com/thread-589937-1-1.html 截图 ...

  8. android如何调用接口方法,在Android中访问WebService接口的方法

    需要引入ksoap2-android-assembly-2.5.2-jar-with-dependencies.jar 代码如下: //WebService的命名空间 static final Str ...

  9. java xml接口实例_Java访问WebService接口方法 , 返回xml数据,能根据 下面的能给我写个实例吗?略急...

    接口方法StringgetHolidayMsg(Stringkey,Stringflag,StringxmlMessage)参数说明keyXX提供给的key值,传入key值不正确不能正常提取数据,值为 ...

最新文章

  1. webablizer 分析Apache 的access 日志
  2. 42佳优秀的 Photoshop 按钮制作教程
  3. 2021-03-07 Nussbaum函数
  4. leetcode第一刷_Combinations
  5. 美团王兴:24岁创业39岁迎来上市,越对未来有信心,越对当下有耐心
  6. keras-bert学习
  7. python-下拉框处理
  8. Oracle删除重复记录三种方法
  9. c 语言全局变量的声明及用法,《c语言全局变量的用法》
  10. 蓝湖及PS测量设计稿的使用
  11. 毕业实习笔记——WRF模式入门(Cygwin版)
  12. 调用摄像头接口方法合集
  13. kaldi教程_赠书 | 全球稀缺的Kaldi学习资料,《Kaldi语音识别实战》给补上了
  14. 【解决方案】如何结合智慧工地上云平台实现视频监控的多终端观看?
  15. SQL语句编写经典50题
  16. 如何删除Mysql注册列表残余文件
  17. 给所有工作不顺心的人们
  18. 氚云徐平俊:低代码赛道热度陡升,今年增长目标200%
  19. 【CTF WriteUp】2020网鼎杯第一场Crypto题解
  20. Math.pow(x,y)使用注意事项

热门文章

  1. cppcheck(Cppcheck生成xml重定向)
  2. 985大学名单及分档排名分析
  3. 校园导航系统java具有gui,[数据结构大作业]HBU Guide 河北大学校园导航
  4. 启动第一个node服务器
  5. pandas iloc 与 loc
  6. LIC(Line Integral Convolution)
  7. 这个报表工具绝了!能做GIS数据地图,还能集成R语言!
  8. php 0.01毫米对折,柔宇科技发布0.01毫米全球最薄显示屏
  9. SpringCloud : 服务的注册与发现(Eureka)
  10. GitHub上面Python排名前十得到开源项目