如何在使用故障时从suds客户端获取http响应代码

bit*_*cle 3 wcf soap suds python-2.6

我正在使用suds来调用Windows/WCF服务,如下所示:


# Setting up my client
client = Client(wsdl, transport = my_transport, location = url, faults = True, headers = my_soap_action_header, cache = None, wsse = my_http_security)

而且,我得到的回应是这样的:


(Link){ Id = 12345 Type = "SomeType" }

通过与Web服务的开发人员交谈,我知道返回值是返回的对象的ID和类型,否则它将引发异常.

也就是说,我想知道如何询问suds客户端的正常http响应代码(例如200).

oll*_*_uk 5

我觉得这是一个老问题,但万一其他人偶然发现这个问题,我会提供一个答案.

您可以使用faults = False此设置客户端,然后在发生错误时不会抛出webFaults(因此您必须实现自己的错误处理)而不是它返回一个元组

(<status>, <returned-value>)
Run Code Online (Sandbox Code Playgroud)

所以例如(取自suds文档)

client = client(url, faults=False)
result = client.service.addPerson(person)
print result

( 200, person ...)
Run Code Online (Sandbox Code Playgroud)

希望有所帮助(如果你回头看这里)