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

先记录一下背景:

工作中一次与其他系统进行接口调用调试时,对方提供了webservice的一套服务文档和调用参数说明。what?webservice?没怎么用过,以为和API形式的调用差不多,但基于尊重,还是先百度了一下,不看不知道,一看吓一跳!


百度百科:

Web Service是一个平台独立的,低耦合的,自包含的、基于可编程的web的应用程序,可使用开放的XML(标准通用标记语言下的一个子集)标准来描述、发布、发现、协调和配置这些应用程序,用于开发分布式的交互操作的应用程序。


案例说明【踩坑步骤】:

1.对接方给的文档中简要概述分为两部分:url+参数 【惊呆了·!·】
2.一窍不通的自己,用requests的方式尝试post进行请求,发现异想天开
3.研究webservice的文档,多为xml,wsdl等的说明,不太懂这些真看得不是很明白
4.百度一些网友的博客,使用suds的居多,也有用requests的三下五除二整出来的,看得不是很明白。跟着网友的脚步尝试,版本问题、参数格式问题、调用方式问题等层出不穷,果然中国特色社会主义道路是自己摸索的,照搬洋人的制度是不会成功的~于是我找到了suds的官方文档,先学文档。

文档顺便附上: https://suds-py3.readthedocs.io/en/stable/.

简单说明一下,调用webservice的服务时,主要是通过suds的client客户端来完成的。先对接口进行client = Client(url) 处理,然后使用client.service.方法(参数)进行调用即可。

下面放代码:

import json,requests,random,string
from suds.client import Client

#注意,有些文档里接口可能没把?wsdl写进去,但是调用时是需要有这个参数的 
url = "http://xxxxxxxxxxxx/webservices/IncidentService?wsdl"

#随机数
ran_str = ''.join(random.sample(string.ascii_letters + string.digits, 30))

incidentContent = str({
    "SOURCEID": "86",
    "SOURCECASEID": ran_str,
    "OWNER": "xxxxx",
    "TITLE": "测试测试测试测试",
    "CONTENT": "备注测试备注测试201606142",
    "CHANNELID": "176",
    "system": "xxxx",
    "happentime": "2021-08-25 15:00:00",
    "affectarea": "测试字段"
})

client = Client(url)
#print(client)


try:
    result = client.service.addIncidents(incidentContent)
    print(result)
except Exception as e:
    print(e)

incidentContent为参数字段,里面的内容根据接口来定。
addIncidents为方法名,如果不确认有哪些方法,可以从client中获取,方式如下方代码片:

client = Client(url)
print(client)   #打印该结果,来获取全部方法

另外,参数的格式需要根据接口来去确认,是str字符串,还是xml,还是json等
xml的话又需要去做解析,格式转换,我这边没去试。json当然就比较简单了。案例中使用的string字符串格式,是因为接口要求就是这样,当然这样也省事。
在这里插入图片描述

就先记录到这啦


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值