[SOAP] Changer l'encoding d'une requête

Changer l'encoding d'une requête [SOAP] - Java - Programmation

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  :hello:  
 
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
Reply

Marsh Posté le 19-11-2002 à 11:18:10   

Reply

Marsh Posté le 19-11-2002 à 12:25:19    

j'en ai aucune idée, mais [:tomilou] quand même
 :hello:


---------------
"I wonder if the internal negative pressure in self pumping toothpaste tubes is adjusted for different market altitudes." John Carmack
Reply

Marsh Posté le 19-11-2002 à 12:26:02    

mareek a écrit a écrit :

j'en ai aucune idée, mais [:tomilou] quand même
 :hello:  




 
 :jap:


---------------
Just because you feel good does not make you right
Reply

Marsh Posté le 19-11-2002 à 12:35:10    

[:troa]


Message édité par --greg-- le 19-11-2002 à 12:37:13

---------------
#19b | Mardi 18 Février 2003 - nous fêtons les Bernadette | contre le fleur icq!
Reply

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  :hello:  
 
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 '&#233;' ou '&#xE9;'.
 
Note : mes réponses ne sont pas propres à SOAP, mais sont générales à tout document XML.

Reply

Marsh Posté le 19-11-2002 à 12:45:10    

non mais j'entends bien biface hein :o
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é.


---------------
Just because you feel good does not make you right
Reply

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 ???


---------------
Just because you feel good does not make you right
Reply

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à...  :??:

Reply

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  :whistle: mais ça peut te donner des pistes...

Reply

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 ...


---------------
Just because you feel good does not make you right
Reply

Marsh Posté le 19-11-2002 à 14:25:07   

Reply

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  :whistle: 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 ...


---------------
Just because you feel good does not make you right
Reply

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!!  :whistle:  
et pis moi, je commence juste le SOAP!!  :D

Reply

Marsh Posté le 19-11-2002 à 14:52:01    

soap ca sux !
 
[:panneauQuiDitjeSuisDehors]

Reply

Marsh Posté le 19-11-2002 à 14:58:20    

benou a écrit a écrit :

soap ca sux !
 
[:panneauQuiDitjeSuisDehors]




 
 [:tapai]


---------------
Just because you feel good does not make you right
Reply

Marsh Posté le 19-11-2002 à 15:08:29    

benou a écrit a écrit :

soap ca sux !
 
[:panneauQuiDitjeSuisDehors]



[:dehors] --> [ : dehors ]


Message édité par --greg-- le 19-11-2002 à 15:08:38

---------------
#19b | Mardi 18 Février 2003 - nous fêtons les Bernadette | contre le fleur icq!
Reply

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.

Reply

Marsh Posté le 20-11-2002 à 09:26:36    

:cry: 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 ???


---------------
Just because you feel good does not make you right
Reply

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 :
  1. import java.util.StringWriter;
  2. import java.io.IOException;
  3. import org.apache.xml.serialize.OutputFormat;
  4. import org.apache.xml.serialize.XMLSerializer;
  5. import org.w3c.dom.Element;
  6. public static String serializeXML(Element element) throws IOException
  7. { StringWriter ret = null;
  8.   try
  9.   { OutputFormat outFormat = new OutputFormat("xml","ISO-8859-1",false);
  10.     ret = new StringWriter();
  11.     XMLSerializer xmls = new XMLSerializer(ret, outFormat);
  12.     xmls.serialize(element);
  13.   }
  14.   catch (IOException e)
  15.   { System.out.println("ERROR" );
  16.     throw e;
  17.   }
  18.   return ret.getBuffer().toString();
  19. }

Reply

Marsh Posté le 20-11-2002 à 13:42:56    

mais je ne veux pas sérializer un Element hein ...


---------------
Just because you feel good does not make you right
Reply

Marsh Posté le 20-11-2002 à 13:53:57    

cherche un peu hein :o
 


---------------
#19b | Mardi 18 Février 2003 - nous fêtons les Bernadette | contre le fleur icq!
Reply

Marsh Posté le 20-11-2002 à 14:06:32    

--greg-- a écrit a écrit :

cherche un peu hein :o
 
 




 
mais je ne fais que ca. Retourne à tes threads toi débutant :o


---------------
Just because you feel good does not make you right
Reply

Marsh Posté le 20-11-2002 à 14:08:53    

[:--greg--]


---------------
#19b | Mardi 18 Février 2003 - nous fêtons les Bernadette | contre le fleur icq!
Reply

Marsh Posté le    

Reply

Sujets relatifs:

Leave a Replay

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