最近做壓測接觸到了webservice接口,它用到的是soap協(xié)議跟老程序員們咨詢了一下,說這種接口也都好久沒有寫過了,但是其實都是http請求查牌,只不過soap協(xié)議上傳的是xml的報文。所以發(fā)起http請求的方式就有很多滥壕。網(wǎng)上也可以查到很多比如Python調(diào)用soap協(xié)議纸颜,Jmeter調(diào)用soap協(xié)議等。
由于只有個wsdl文檔绎橘,想要寫成腳本胁孙,我需要讀懂這個wsdl文檔,比如
其實這個wsdl文檔只是一個對接口請求結(jié)構(gòu)的一個描述文件称鳞,肉眼去讀縱然可以看個大概涮较,但是對于xml不太熟的還是比較累的,而且容易漏掉關(guān)鍵信息冈止,所以用soapUI這個工具來讀就可以了狂票。
soapUI是一個可以發(fā)起webservice請求的工具,具體使用方法本人也不熟熙暴,就不多嘴了闺属。這里用他的主要目的是解析wsdl文檔。
首先點擊soap按鈕周霉,選擇wsdl文件導(dǎo)入進來掂器,就可以生成測試用例了。雙擊request1俱箱,可以看到完整的請求結(jié)構(gòu)
所有尖括號中間的問號就是參數(shù)了国瓮。URL在上面可以看到,左側(cè)可以填寫用戶名和密碼等信息狞谱。惦記綠色的三角形按鈕(“播放”)就可以發(fā)起請求了乃摹,他的響應(yīng)也是xml文本,在窗口的右半部分。
如果看不懂不要緊跟衅,通過fiddler可以抓到這個發(fā)出的請求
所以到這里就任由我們?nèi)グl(fā)揮了孵睬,比如用Python去請求,可以做自動化之類的事情:
import requests
wsdl_url = "https://0.0.0.0:00000/iot/ccs/easisan"
headers = {'content-type': 'text/xml;charset=UTF-8',
'Authorization': 'Basic 嘻嘻嘻嘻嘻嘻嘻',
'User-Agent': 'Apache-HttpClient/4.5.5 (Java/16.0.1)',
}
body = """
<soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/" xmlns:urn="urn:sap-com:document:sap:rfc:functions">
<soapenv:Header/>
<soapenv:Body>
<urn:YXIOT_EASISANDSER>
<!--Optional:-->
<ADATTATS>20220131</ADATTATS>
<!--Optional:-->
<ATIMTATS>0031</ATIMTATS>
<!--Optional:-->
<FSTDCCFA>1818.16</FSTDCCFA>
<!--Optional:-->
<IFFST></IFFST>
<!--Optional:-->
<ISTATUS></ISTATUS>
<!--Optional:-->
<IVERTRAG>3016493609</IVERTRAG>
<!--Optional:-->
<METERCODE>001501906036050</METERCODE>
<!--Optional:-->
</urn:YXIOT_EASISANDSER>
</soapenv:Body>
</soapenv:Envelope>
"""
response = requests.post(wsdl_url, data=body, headers=headers, verify=False)
print(response.content)
再比如說jmeter請求用來做性能測試