本人很少与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)