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)

 

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