j'ai un serveur xmlrpc qui reçoit des appels en provenance de clients Windows.
Parmi ce que ces clients envoient, je reçois des chaînes de caractères multi-ligne, avec des "\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 (les clients m'affichent un beau caractère carré au lieu du saut de ligne ... )
Démonstration du problème :
$ 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')
^^^^^
>>>
Qu'est-ce que je peux faire pour éviter la disparition de ces caractères ? (à part faire un output.replace("\n", "\n\r") :D )
Cette action est irreversible, confirmez la suppression du commentaire ?
Signaler le commentaire
Veuillez sélectionner un problème
Nudité
Violence
Harcèlement
Fraude
Vente illégale
Discours haineux
Terrorisme
Autre
Eric Deveaud
Jonathan B. wrote:
Salut,
j'ai un serveur xmlrpc qui reçoit des appels en provenance de clients Windows. Parmi ce que ces clients envoient, je reçois des chaînes de caractères multi-ligne, avec des "nr" 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 (les clients m'affichent un beau caractère carré au lieu du saut de ligne ... )
Démonstration du problème : $ 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.
sans aucune garantie est-ce qu'un replace('n', 'nr') sur la chaine ne conviendrait pas ??
y'a surement un truc plus mieux bien, mais je connais pas windows ;-) et n'ai pas eu a me pencher sur ce type de pb ;-))
Eric -- un tentative de penetration (pas de sous entendus) d'un systeme peut etr compare a un viol. Le portscan reviendrait a promener ses doigts pour voir s'il y a une ceinture de chastete ... -+- M in GNU - Petit traité de sexualité informatique appliquée -+-
Jonathan B. wrote:
Salut,
j'ai un serveur xmlrpc qui reçoit des appels en provenance de clients Windows.
Parmi ce que ces clients envoient, je reçois des chaînes de caractères multi-ligne, avec des "nr" 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 (les clients m'affichent un beau caractère carré au lieu du saut de ligne ... )
Démonstration du problème :
$ 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.
sans aucune garantie est-ce qu'un replace('n', 'nr') sur la chaine
ne conviendrait pas ??
y'a surement un truc plus mieux bien, mais je connais pas windows ;-)
et n'ai pas eu a me pencher sur ce type de pb ;-))
Eric
--
un tentative de penetration (pas de sous entendus) d'un systeme peut
etr compare a un viol. Le portscan reviendrait a promener ses doigts
pour voir s'il y a une ceinture de chastete ...
-+- M in GNU - Petit traité de sexualité informatique appliquée -+-
j'ai un serveur xmlrpc qui reçoit des appels en provenance de clients Windows. Parmi ce que ces clients envoient, je reçois des chaînes de caractères multi-ligne, avec des "nr" 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 (les clients m'affichent un beau caractère carré au lieu du saut de ligne ... )
Démonstration du problème : $ 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.
sans aucune garantie est-ce qu'un replace('n', 'nr') sur la chaine ne conviendrait pas ??
y'a surement un truc plus mieux bien, mais je connais pas windows ;-) et n'ai pas eu a me pencher sur ce type de pb ;-))
Eric -- un tentative de penetration (pas de sous entendus) d'un systeme peut etr compare a un viol. Le portscan reviendrait a promener ses doigts pour voir s'il y a une ceinture de chastete ... -+- M in GNU - Petit traité de sexualité informatique appliquée -+-
Jonathan B.
Eric Deveaud wrote:
Jonathan B. wrote:
Salut,
j'ai un serveur xmlrpc qui reçoit des appels en provenance de clients Windows. Parmi ce que ces clients envoient, je reçois des chaînes de caractères multi-ligne, avec des "nr" 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 (les clients m'affichent un beau caractère carré au lieu du saut de ligne ... )
Démonstration du problème : $ 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.
sans aucune garantie est-ce qu'un replace('n', 'nr') sur la chaine ne conviendrait pas ??
y'a surement un truc plus mieux bien, mais je connais pas windows ;-) et n'ai pas eu a me pencher sur ce type de pb ;-))
Eric
Hum, c'est ce que je vais être amené à faire finalement je pense, mais j'espérais une solution plus mieux propre :) Le seul truc qui me pose problème à faire ça, c'est est-ce que dans tout les cas je vais avoir besoin de remplacer mes n par des nr ??
Je crois qu'on va dire oui, ça simplifiera les choses :D
Jonathan
Eric Deveaud wrote:
Jonathan B. wrote:
Salut,
j'ai un serveur xmlrpc qui reçoit des appels en provenance de clients Windows.
Parmi ce que ces clients envoient, je reçois des chaînes de caractères multi-ligne, avec des "nr" 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 (les clients m'affichent un beau caractère carré au lieu du saut de ligne ... )
Démonstration du problème :
$ 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.
sans aucune garantie est-ce qu'un replace('n', 'nr') sur la chaine
ne conviendrait pas ??
y'a surement un truc plus mieux bien, mais je connais pas windows ;-)
et n'ai pas eu a me pencher sur ce type de pb ;-))
Eric
Hum, c'est ce que je vais être amené à faire finalement je pense, mais j'espérais une solution plus mieux propre :)
Le seul truc qui me pose problème à faire ça, c'est est-ce que dans tout les cas je vais avoir besoin de remplacer mes n par des nr ??
Je crois qu'on va dire oui, ça simplifiera les choses :D
j'ai un serveur xmlrpc qui reçoit des appels en provenance de clients Windows. Parmi ce que ces clients envoient, je reçois des chaînes de caractères multi-ligne, avec des "nr" 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 (les clients m'affichent un beau caractère carré au lieu du saut de ligne ... )
Démonstration du problème : $ 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.
sans aucune garantie est-ce qu'un replace('n', 'nr') sur la chaine ne conviendrait pas ??
y'a surement un truc plus mieux bien, mais je connais pas windows ;-) et n'ai pas eu a me pencher sur ce type de pb ;-))
Eric
Hum, c'est ce que je vais être amené à faire finalement je pense, mais j'espérais une solution plus mieux propre :) Le seul truc qui me pose problème à faire ça, c'est est-ce que dans tout les cas je vais avoir besoin de remplacer mes n par des nr ??
Je crois qu'on va dire oui, ça simplifiera les choses :D
Jonathan
jeff
La spéc. xmlrpc (http://www.xmlrpc.com/spec) dit :
""" What characters are allowed in strings? Non-printable characters? Null characters? Can a "string" be used to hold an arbitrary chunk of binary data?
Any characters are allowed in a string except < and &, which are encoded as < and &. A string can be used to encode binary data. """
Donc les r et n devraient être préservés. N'y a-t-il pas un bug dans xmlrpclib ? (voir http://www.pythonware.com).
En attendant, les clients ne pourraient-ils pas être adaptés pour remplacer "r" ? Le serveur faisant la manip. inverse.
jeff
La spéc. xmlrpc (http://www.xmlrpc.com/spec) dit :
"""
What characters are allowed in strings? Non-printable characters?
Null characters? Can a "string" be used to hold an arbitrary chunk
of binary data?
Any characters are allowed in a string except < and &, which are
encoded as < and &. A string can be used to encode binary
data.
"""
Donc les r et n devraient être préservés.
N'y a-t-il pas un bug dans xmlrpclib ? (voir
http://www.pythonware.com).
En attendant, les clients ne pourraient-ils pas être adaptés pour
remplacer "r" ? Le serveur faisant la manip. inverse.
La spéc. xmlrpc (http://www.xmlrpc.com/spec) dit :
""" What characters are allowed in strings? Non-printable characters? Null characters? Can a "string" be used to hold an arbitrary chunk of binary data?
Any characters are allowed in a string except < and &, which are encoded as < and &. A string can be used to encode binary data. """
Donc les r et n devraient être préservés. N'y a-t-il pas un bug dans xmlrpclib ? (voir http://www.pythonware.com).
En attendant, les clients ne pourraient-ils pas être adaptés pour remplacer "r" ? Le serveur faisant la manip. inverse.