Недействительный Unicode / XML с Python SimpleXMLRPCServer?

Я получаю следующую ошибку на стороне клиента, когда я передаю недопустимые символы XML на Python SimpleXMLRPCServer:

Fault: <Fault 1: "<class 'xml.parsers.expat.ExpatError'>:not well-formed (invalid token): line 6, column 15">

Почему? Мне нужно изменить код библиотеки SimpleXMLRPCServer, чтобы исправить это?

Вот мой код сервера XML-RPC:

from SimpleXMLRPCServer import SimpleXMLRPCServer

import logging
logging.basicConfig(level=logging.DEBUG)

def tt(text):
    return "cool"

server = SimpleXMLRPCServer(("0.0.0.0", 9000))
server.register_introspection_functions()
server.register_function(tt)

# Run the server's main loop
server.serve_forever()

Вот мой Код клиента XML-RPC:

s = xmlrpclib.ServerProxy('http://localhost:9000')
s.tt(unichr(0x8))

На стороне сервера я не t получить ЛЮБУЮ ошибку или трассировку:

liXXXXXX.members.linode.com - - [06/Dec/2010 23:19:40] "POST /RPC2 HTTP/1.0" 200 -

Почему на стороне сервера нет ошибки? Как мне диагностировать, что происходит?

И я получаю следующую трассировку на стороне клиента:

/usr/lib/python2.6/xmlrpclib.pyc in __call__(self, *args)
   1197         return _Method(self.__send, "%s.%s" % (self.__name, name))
   1198     def __call__(self, *args):
-> 1199         return self.__send(self.__name, args)
   1200 
   1201 ##


/usr/lib/python2.6/xmlrpclib.pyc in __request(self, methodname, params)
   1487             self.__handler,
   1488             request,
-> 1489             verbose=self.__verbose
   1490             )
   1491 

/usr/lib/python2.6/xmlrpclib.pyc in request(self, host, handler, request_body, verbose)
   1251             sock = None
   1252 
-> 1253         return self._parse_response(h.getfile(), sock)
   1254 
   1255     ##


/usr/lib/python2.6/xmlrpclib.pyc in _parse_response(self, file, sock)
   1390         p.close()
   1391 
-> 1392         return u.close()
   1393 
   1394 ##


/usr/lib/python2.6/xmlrpclib.pyc in close(self)
    836             raise ResponseError()
    837         if self._type == "fault":
--> 838             raise Fault(**self._stack[0])
    839         return tuple(self._stack)
    840 

Fault: <Fault 1: "<class 'xml.parsers.expat.ExpatError'>:not well-formed (invalid token): line 6, column 15">

Как получить нормальную обработку на стороне сервера, если входные данные содержат недопустимый XML? Могу ли я очистить эту сторону сервера данных? Как?

7
задан Joseph Turian 7 December 2010 в 04:24
поделиться