xmlrpclib et caractères carriagereturn (\r)

xmlrpclib et caractères carriagereturn (\r) - Python - Programmation

Marsh Posté le 09-03-2006 à 12:00:20    

Salut,
 
j'ai un serveur xmlrpc qui recoit des appels en provenance de clients Windows. Parmi ce que ces clients envoient, je recois des chaines de caractères multi-ligne, avec ces \n\r dedans.
Le problème, c'est que quand je fais un appel à xmlrpclib.loads pour récupérer la méthode et les paramètres de cet appel, xmlrpclib.loads me bouffe les \r :/
Comme je dois renvoyer ces infos après à d'autres clients Windows, c'est un peu génant [:dawa] (les clients m'affichent un beau caractère carré au lieu du saut de ligne  [:klem3i1]  )
 
Un bout de code pour situer le problème :
 

Code :
  1. class RequestHandler(BaseHTTPRequestHandler):
  2.     
  3.     def do_POST(self):
  4.         try:
  5.             data = self.rfile.read(int(self.headers["content-length"]))
  6.             try:
  7.                 params, method = xmlrpclib.loads(data)
  8.             except:
  9.                 self.logger.critical("Unable to parse XML-RPC call :\n=============\n%s\n=================\n", str(data))
  10.                 raise
  11. [...]


 
Dans 'data', je récupère bien les \n\r, par contre, dans 'method' juste en dessous, j'ai plus que \n ...
 
 
 
Bref, comment je pourrais faire pour éviter de bouffer ce caractère  ? :o


Message édité par multani le 09-03-2006 à 12:12:43
Reply

Marsh Posté le 09-03-2006 à 12:00:20   

Reply

Marsh Posté le 09-03-2006 à 12:13:35    

humpf, chais plus si c'est la caractère carriage return ou line feed qui disparait, mais bon.
Y'en a deux à la base, et j'en récupère qu'un, et je voudrais bien les deux, voilà [:pingouino]

Reply

Marsh Posté le 09-03-2006 à 12:28:12    

Démonstration du problème [:dawa]


$ python
Python 2.3.5 (#2, Sep  4 2005, 22:01:42)
[GCC 3.3.5 (Debian 1:3.3.5-13)] on linux2
Type "help", "copyright", "credits" or "license" for more information.
>>> import xmlrpclib
>>> data = """<?xml version="1.0" encoding="utf-8"?>\n<methodCall>\n  <methodName>testmethod</methodName>\n  <params>\n    <param>\n      <value>\n        <string>bla\n\rbla\n\r       bla</string>\n      </value>\n    </param>\n  </params>\n</methodCall>"""
>>> xmlrpclib.loads(data)
(('bla\n\nbla\n\n\tbla',), u'testmethod')
>>>

Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed