Python调用WebServer(WSDL)注意事项

本人很少与WebServer交互,最近调用公司SAP的同步人员信息,发现一些很小的点,但是很浪费时间的注意事项;

第一:不要去相信对方开发者嘴中所谓的JSON,很有可能是各种非标准JSON;

这是非标准JSON,至于标准的,键带有双引号的

{reqno: "100320200604163700O0001",type: "01", public1: "", public2: "1", public3: ""}

第二:不要去相信对方开发者文档中粘贴的URL,因为那是他们原生URL,你一定要将地址先放SoapUI里面去调用一下,然后从SoapUI里面复制地址,否则你会头疼死,WebServer都是XML传递数据,所以你的请求报文一定要从SoapUI中复制出来改;

第三:记得多问一句是否有什么特殊参数传递,有权限设置吗,是否需要登录

第四:Python调用就用Requests就好了,非常好用简单,用POST方法将请求报文包裹好发送给WebServer接口就好了

下面放一个小Demo,因为涉及到一些重要的东西,所以我很明确的告诉你,直接复制是调不通的

        try:
            import requests
            import json
            sap_url = "SoapUI粘贴的地址"
            x = '<soapenv:Envelope xmlns:soapenv="http://s>'
            x += "<soapenv:Header/>"
            x += "<soapenv:Body>"
            x += "<urn:ZHROM001>"
            x += '<I_JSON>{reqno: "100320200604163700O0001",type: "01", public1: "", public2: "1", public3: ""}</I_JSON>'
            x += "</urn:ZHROM001>"
            x += "</soapenv:Body>"
            x += "</soapenv:Envelope>"

            res = requests.post(sap_url, data=x.encode('utf-8'), headers={'Content-Type': 'text/xml'}, auth=('账号', '密码'))
            print(res.text)
            print(res.status_code)
        except Exception as error:
            return ReturnData(message=str(error), statusCode=500)
        return ReturnData(message="OK", statusCode=200)

 

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值