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)

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章