有没有一种方法可以使用python编码,以便在客户端以正确的CR显示xmlrpc错误消息?
在python中的有没有一种方法可以使用python编码,以便在客户端以正确的CR显示xmlrpc错误消息?,python,python-2.7,xml-rpc,xmlrpclib,Python,Python 2.7,Xml Rpc,Xmlrpclib,在python中的xmlrpc服务器的服务器端,我在覆盖SimpleXMLRPCServer的函数中有以下代码行 response = xmlrpclib.dumps( xmlrpclib.Fault(1, "some error\nnext line\n"), encoding=self.encoding, allow_none=self.allow_none) 创建要在客户端显示的自定义错误/故障消息。但是,此代码将在客户端显示如下内容 xm
xmlrpc
服务器的服务器端,我在覆盖SimpleXMLRPCServer的函数中有以下代码行
response = xmlrpclib.dumps(
xmlrpclib.Fault(1, "some error\nnext line\n"),
encoding=self.encoding, allow_none=self.allow_none)
创建要在客户端显示的自定义错误/故障消息。但是,此代码将在客户端显示如下内容
xmlrpclib.Fault: <Fault 1: "some error\nnext line\n">
xmlrpclib.Fault:
而我想要的是
xmlrpclib.Fault: <Fault 1: "some error
next line
">
xmlrpclib.Fault:
i、 e.换行符实际已“使用”且未打印
我有什么想法可以做到这一点(每个服务器端,即在不使用第三方软件包的情况下修改上面显示的行。)?您看到的是故障
对象的表示;字符串消息本身包含在.faultString
属性中:
print fault.faultString
Fault类的\uuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuu;如果不更改xmlrpclib.Fault
类本身(通过替换它的\uuu repr\uuu
方法或向它添加\uu str\uuu
方法),就无法解决这个问题
您可以将其添加到类中:
from xmlrpclib import Fault
def fault_repr(self):
return "<Fault %s: %s>" % (self.faultCode, self.faultString)
Fault.__repr__ = fault_repr
来自xmlrpclib导入错误
def故障报告(自身):
返回“”%(self.faultCode,self.faultString)
故障。_repr__=故障_repr
当然可以,但问题是我无法在客户端使用您的建议,除非我将所有代码放在try..except
子句中以正确处理消息。另一种方法是覆盖xmlrpclib.ServerProxy
中的某个方法,该方法处理xmlrpc
故障的打印。也许你知道该使用哪种方法?好的,我想我只需要在客户端用你的建议覆盖xmlrpclib.Fault方法(或者实际上只使用\uuu repr\uuu
方法。)@Alex:在快速检查xmlrpclib
代码后更新。您必须使用faultString
值。您似乎忘记了原始答案中的.decode('string\u escape')
功能。应该添加它以获得此问题的有效答案。@Alex:这取决于faultstring值本身;您的帖子表明错误字符串本身没有转义,否则在打印错误repr()
时将以双转义结束。在这种情况下,解码replacementrepr()
中的字符串不会起任何作用。