Changer l'encoding d'une requête [SOAP] - Java - Programmation
Marsh Posté le 19-11-2002 à 12:25:19
j'en ai aucune idée, mais quand même
Marsh Posté le 19-11-2002 à 12:26:02
mareek a écrit a écrit : j'en ai aucune idée, mais quand même |
Marsh Posté le 19-11-2002 à 12:35:10
Marsh Posté le 19-11-2002 à 12:42:40
DarkLord a écrit a écrit : Hello, Quelqu'un sait comment on peut changer l'encoding d'un appel SOAP avec Java et Apache SOAP. Visiblement il prends UTF-8 par défaut mais on a besoin de code non UTF-8 (come éè et compagnie). Merchi Au sinon au pire, quelqu'un sait comment désérializer un document XML en UTF-8 avec des caractères non UTF-8 sans générer une exception (en gros on reçoit le doc XML de réponse en UTF-8 sous forme d'une String sérialisée et on utilise un DocumentBuilder pour récupérer un Element. Mais bon ca foire évidemment dès qu'il trouve un caractère non UTF-8) |
<?xml version="1.0" encoding="iso-8859-1"?>
Sinon, si tu as besoin de caractères qui ne respectent pas l'encoding, tu as 2 solutions : soit les mettre dans un CDATA, qui, contrairement au PCDATA, n'est pas parsé par le parser XML, ou tu les transforme en l'entité équivalente. Exemple : é doit être transformé en 'é' ou 'é'.
Note : mes réponses ne sont pas propres à SOAP, mais sont générales à tout document XML.
Marsh Posté le 19-11-2002 à 12:45:10
non mais j'entends bien biface hein
je suis pas stupide à ce point.
Le truc c'est que pour construire l'appel soap, on build en interne un "doc XML" et on passe à la méthode une instance de Element (org.w3c.Element). Alors si tu as une méthode pour setter l'encoding à ce moment là, feel free parce que je n'ai pas trouvé.
Marsh Posté le 19-11-2002 à 13:10:17
biface > Est ce que tu sais comment modifier le DocumentBuilder par défaut pour qu'il génère un doc XML avec un encoding ISO-8859-1 ???
Marsh Posté le 19-11-2002 à 13:15:51
je me trompe pitêtre, mais normalement, l'encodage se définit dans la DTD, donc regardes de ce côté là...
Marsh Posté le 19-11-2002 à 13:44:08
Salut, je sais pas si ça peut répondre à tes questions mais j'avais eu à peu près les mêmes problèmes.
j'avais des tonnes d'erreurs dès que je faisais passer des caractères non UTF-8 entre mon client et mon serveur SOAP
j'ai retrouvé mes lignes de code vite fait.
à l'époque, ma solution avait été de tout transformer en byte avant d'envoyer ma requête:
params.addElement(new Parameter("message",byte[].class,Serialize(doc).getBytes(),null));
avec une méthode Serialize( Document doc ) qui permet de récupérer une String à partir d'un Document.
Il me semble qu'une autre solution était de passer mon flux XML dans une méthode qui transformait en base 64 ... avant de l'envoyer...
sais plus exactement mais ça peut te donner des pistes...
Marsh Posté le 19-11-2002 à 14:25:07
arghbis a écrit a écrit : je me trompe pitêtre, mais normalement, l'encodage se définit dans la DTD, donc regardes de ce côté là... |
tu te trompes ...
Marsh Posté le 19-11-2002 à 14:25:52
chichos a écrit a écrit : Salut, je sais pas si ça peut répondre à tes questions mais j'avais eu à peu près les mêmes problèmes. j'avais des tonnes d'erreurs dès que je faisais passer des caractères non UTF-8 entre mon client et mon serveur SOAP j'ai retrouvé mes lignes de code vite fait. à l'époque, ma solution avait été de tout transformer en byte avant d'envoyer ma requête: params.addElement(new Parameter("message",byte[].class,Serialize(doc).getBytes(),null)); avec une méthode Serialize( Document doc ) qui permet de récupérer une String à partir d'un Document. Il me semble qu'une autre solution était de passer mon flux XML dans une méthode qui transformait en base 64 ... avant de l'envoyer... sais plus exactement mais ça peut te donner des pistes... |
non mais le deal (et c'est étonnant) c'est que la requete passe très bien ... Mais pour la réponse par contre ...
Marsh Posté le 19-11-2002 à 14:49:44
ben je me disais bien aussi que je me trompais .... mais on sait jamais, des fois, les erreurs des autres nous mettent sur la piste!!
et pis moi, je commence juste le SOAP!!
Marsh Posté le 19-11-2002 à 14:58:20
benou a écrit a écrit : soap ca sux ! |
Marsh Posté le 19-11-2002 à 15:08:29
benou a écrit a écrit : soap ca sux ! |
--> [ : dehors ]
Marsh Posté le 19-11-2002 à 19:34:06
DarkLord a écrit a écrit : biface > Est ce que tu sais comment modifier le DocumentBuilder par défaut pour qu'il génère un doc XML avec un encoding ISO-8859-1 ??? |
Là tu franchis mon niveau d'incompétence... Sorry.
Marsh Posté le 20-11-2002 à 09:26:36
mais enfin il doit qd meme y a voir moyen de générer des documents XML avec encoding ISO-8859-1 quand meme non ???
Marsh Posté le 20-11-2002 à 13:02:04
Personnellement, j'utilise le code suivant mais je ne sais pas si ça va te convenir.
Code :
|
Marsh Posté le 20-11-2002 à 13:42:56
mais je ne veux pas sérializer un Element hein ...
Marsh Posté le 20-11-2002 à 13:53:57
cherche un peu hein
Marsh Posté le 20-11-2002 à 14:06:32
--greg-- a écrit a écrit : cherche un peu hein |
mais je ne fais que ca. Retourne à tes threads toi débutant
Marsh Posté le 20-11-2002 à 14:08:53
Reply
Marsh Posté le 19-11-2002 à 11:18:10
Hello,
Quelqu'un sait comment on peut changer l'encoding d'un appel SOAP avec Java et Apache SOAP. Visiblement il prends UTF-8 par défaut mais on a besoin de code non UTF-8 (come éè et compagnie).
Merchi
Au sinon au pire, quelqu'un sait comment désérializer un document XML en UTF-8 avec des caractères non UTF-8 sans générer une exception (en gros on reçoit le doc XML de réponse en UTF-8 sous forme d'une String sérialisée et on utilise un DocumentBuilder pour récupérer un Element. Mais bon ca foire évidemment dès qu'il trouve un caractère non UTF-8)
---------------
Just because you feel good does not make you right