如何使用Python Zeep库正确格式化构造SOAP请求
问题说明
当前使用的WSDL地址:http://sprws.sprich.com/sprws/StockCheck.php?wsdl,SoapUI中构造的标准请求格式如下:
<soapenv:Envelope xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/" xmlns:stoc="http://sprws.sprich.com/sprws/StockCheck.php?wsdl"> <soapenv:Header/> <soapenv:Body> <stoc:StockCheck soapenv:encodingStyle="http://schemas.xmlsoap.org/soap/encoding/"> <input xsi:type="stoc:StockCheckInputs"> <!--以下10个参数可按任意顺序传入--> <GroupCode xsi:type="xsd:string">[Removed]</GroupCode> <UserID xsi:type="xsd:string">[Removed]</UserID> <Password xsi:type="xsd:string">[Removed]</Password> <Action xsi:type="xsd:string">F</Action> <CustNumber xsi:type="xsd:string"></CustNumber> <DcNumber xsi:type="xsd:string"></DcNumber> <ItemNumber xsi:type="xsd:string">HAM105007CT</ItemNumber> <SortBy xsi:type="xsd:string">A</SortBy> <MinInFullPacks xsi:type="xsd:string"></MinInFullPacks> <AvailableOnly xsi:type="xsd:string">Y</AvailableOnly> </input> </stoc:StockCheck> </soapenv:Body> </soapenv:Envelope>
原有测试代码的问题是没有按照接口要求把参数包裹在input节点下,直接平铺传参导致请求结构不符合WSDL定义。
正确调用方法
核心逻辑
接口的StockCheck方法仅接收一个名为input的复合类型参数,所有查询字段都要作为这个复合类型的属性传入,不能直接把字段平铺传给方法。
可直接运行的代码
from zeep import Client # 初始化SOAP客户端 wsdl_url = 'http://sprws.sprich.com/sprws/StockCheck.php?wsdl' client = Client(wsdl=wsdl_url) # 按接口要求构造input节点的所有参数,空字段传空字符串即可 query_params = { "GroupCode": "[Removed]", "UserID": "[Removed]", "Password": "[Removed]", "Action": "F", "CustNumber": "", "DcNumber": "", "ItemNumber": "HAM105007CT", "SortBy": "A", "MinInFullPacks": "", "AvailableOnly": "Y" } # 调用接口,显式给input形参传构造好的参数字典 resp = client.service.StockCheck(input=query_params) print(resp)
调试技巧
- 如果不确定接口的参数结构,可以直接在Python交互环境执行
print(client.service.StockCheck),Zeep会自动打印该方法的参数签名、类型要求,对照传参即可。 - 如果请求返回异常,可以开启调试日志查看实际发出的SOAP报文,和SoapUI的标准请求对比结构差异:
import logging import zeep logging.basicConfig(level=logging.INFO) zeep.wsdl.utils.logger.setLevel(logging.DEBUG)
内容的提问来源于stack exchange,提问作者TxTechnician
相关产品推荐
相关产品推荐

