Python3调用webservice接口

写在前面

工作中偶尔需要对接webservice的接口;网上搜了一下,不少的教程推荐使用suds。
但是suds这个包早就停止维护了。对于简单的调用,我还是觉得自己写更方便点,够用就行。

webservice 介绍

想了解的我建议还是看下百度百科,这里就不重复那些内容了。
webservice SOAP,通常使用xml格式。
获取到webservice的接口地址后,直接在浏览器中打开,会看到数据交互样例。
直接使用Python发送请求就行,剩下的就是解析xml了。

发送请求

这里直接使用requests
需要注意的是,需要在webservice样例中拿到headers和body
示例接口地址:http://192.168.1.10/Test_web/Test_web.asmx

# 接口不同,消息体和需要传入的参数也是不同的。body可以参照你需要请求的webservice接口的数据样例
body = '''<?xml version="1.0" encoding="utf-8"?>
<soap:Envelope xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/">
  <soap:Body>
    <Test_Info_Frmweb xmlns="http://localhost/">
      <sImport>''' + str(这里添加上需要发送的参数,这里可以指定编码) + '''</sImport>
    </Test_Info_Frmweb>
  </soap:Body>
</soap:Envelope>'''

# 需要注意的是这里的SOAPAction,一定要正确。
headers = {
        'Host': '192.168.1.10',
        'Content-Type': 'text/xml; charset=utf-8',
        'Content-Length': str(len(body)),
        'SOAPAction': "http://localhost/Test_Info_Frmweb"
    }
# 发送请求
res_xml = requests.post(url=webservice_url, data=body.encode('utf-8'), headers=headers).content.decode('utf-8')

解析xml

# 这里使用内置的 xml 库;parse是解析xml文件的,parseString是解析数据流的
from xml.dom.minidom import parse, parseString

# print(res_xml)
dom_tree = parseString(res_xml)
dom_obj = dom_tree.documentElement
# print(dom_obj)
# 这里可以根据标签名称进行搜索,有多个相同标签的话,可以使用for循环提取
this_dom_res_obj = dom_obj.getElementsByTagName('Test_Info_Frmweb_Result')
# 提取消息体
this_dom_data = this_dom_res_obj[0].childNodes[0].data
print(this_dom_data)

还有很多不足,有空再改进

  • 2
    点赞
  • 14
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

安心写bug

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值