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()
没有给我任何消息。