Python 如何在SUD中获得错误响应?

Python 如何在SUD中获得错误响应?,python,suds,Python,Suds,如果我有一些不正确的授权数据(例如错误的密码),那么会出现异常(400,u'bad Request'),我无法从中获取任何信息,但日志中是response,其中包含密码错误的数据,但如何获取此响应?我试着这样做: except Exception as e: print str(e) print self._client.last_received() auth_client = suds.client.Client(auth_url, faults=True) 它打印:

如果我有一些不正确的授权数据(例如错误的密码),那么会出现异常
(400,u'bad Request')
,我无法从中获取任何信息,但日志中是response,其中包含密码错误的数据,但如何获取此响应?我试着这样做:

except Exception as e:

    print str(e)
    print self._client.last_received()
auth_client = suds.client.Client(auth_url, faults=True)
它打印:

(400, u'Bad Request')
None

但是在日志中有一个很长的xml,它包含
发送者未授权

由于代码块的原因,我把它从一个注释中拉出来,放到一个答案中

import suds.client

try:
    auth_url = "https://url.to.my.service/authenticator?wsdl"
    auth_client = suds.client.Client(auth_url)
    cookie = auth_client.service.authenticate(user,password)
except Exception as e:
    print str(e)
    print auth_client.last_received()
使用此代码,如果我传递了无效密码,我将从我的服务收到相应的响应:

Server raised fault: 'error.pwd.incorrect'
None
如果我传递了一个无效的用户id,则会得到相应的响应:

Server raised fault: 'error.uid.missing'
None

您可能想考虑的事情是更改<<代码>,除了语句,以捕获而不是泛型异常。可能还有其他事情正在发生并触发异常块

另一件可能有助于解决您的问题的事情是传入您的
Client()
调用

可以将客户端配置为将web错误作为WebFault抛出,或者 返回一个元组(,)

我在上面发布的代码如下所示:

except Exception as e:

    print str(e)
    print self._client.last_received()
auth_client = suds.client.Client(auth_url, faults=True)

你是如何定义自己的?@Andy it is suds object你能展示你代码中的
try
部分吗?你所展示的是使用我自己的try块为我工作。让我们看看你的是什么doing@Andy有很多代码。。。主要问题是例外。。。如果我写的密码正确,上次收到的密码就可以正常工作,但当我犯了一些错误,异常后就失败了。它怎么不工作?它在做什么,而你期望什么?
auth\u client=suds.client.client(auth\u url,faults=True)
对我不起作用。仍然
auth\u client.last\u received()
没有给我任何消息。