【发布时间】:2019-05-22 13:06:44
【问题描述】:
我试图在使用 zeep 库进行 SOAP 通信时捕获 FaultException。
当 zeep librabry 从客户端接收 xml 并在内部解析并默认返回字典时,我能够做到这一点。在解析包含 FaultException 的响应时,我得到以下错误。
如预期的那样
Traceback (most recent call last):
File "zeep_test_emulator.py", line 83, in <module>
raise zeep_exceptions.Fault(faultexe.message)
zeep.exceptions.Fault: Forename contains invalid characters
但是当我在客户端设置中启用 raw_response = True 时,zeep 库不会解析 xml,而是只返回 xml 响应。现在,如果响应包含 FaultException,我将无法捕获 FaultExceptions,因为我无法弄清楚如何从响应中引发 FaultException。以下是回复。
<?xml version="1.0" encoding="utf-8"?>
<soap:Envelope xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema">
<soap:Body>
<soap:Fault>
<faultcode>soap:Client</faultcode>
<faultstring>Forename contains invalid characters</faultstring>
<faultactor>https://ct.abcd.co.uk/services.asmx</faultactor>
<detail />
</soap:Fault>
</soap:Body>
</soap:Envelope>
我想区分 FaultExceptions 和 Blind Exceptions。
【问题讨论】: