|
Publicité ' | |||||||||||||||||||||||
|
|
#1 | ||||
|
Invité de passage
![]() Inscription : juin 2008 Messages : 47 ![]() |
Bonjour à tous,
J'utilise Apache uniquement pour installer des Web Service sur un poste mais j'ai un problème d'encodage des chevrons XML dans le retour. Lorsque que je le consomme, l'enveloppe de la réponse est correcte mais le xml qu'elle contient est mal encodé (les < deviennent < et les > deviennent > Le problème est que je n'arrive pas à mettre le charset de l'en-tête en UTF-8. J'ai essayé plusieurs choses mais rien n'y fait, j'ai toujours un message en ISO-8859-1 : - A l'aide du mod_charset_lite.so Dans le httpd.conf, j'ai dé-commenté la ligne : Code :
LoadModule charset_lite_module modules/mod_charset_lite.so Code :
- A l'aide du module mod_headers.so dans le httpd.conf, j'ai dé-commenté la ligne : Code :
LoadModule headers_module modules/mod_headers.so Code :
Merci |
||||
|
|
00
|
|
|
#2 |
![]() ![]() Inscription : août 2005 Messages : 8 293 ![]() |
A priori ce problème n'est pas lié à l'encodage : aucun encodage ne dit que les < sont codés par les octets correspondant à & puis l puis t puis enfin ;. Le problème vient du fait qu'il y a une "entitisation" XML ou HTML du message envoyé par le service Web, car < est la version entité XML du caractère <.
A ta place, je regarderais plutôt ce qu'il y a entre Apache et ton Web service et je m'assurerais que ce n'est pas le Web service (ou le serveur d'appli sur lequel il tourne par exemple) qui ne fait pas cet conversion.
__________________
![]() Du détail, du détail, du détail !!! Revenons à la source : lisons la documentation et les fichiers de trace, la réponse à notre problème s'y trouve sans doute
|
|
|
00
|
|
|
#3 | |
|
Invité de passage
![]() Inscription : juin 2008 Messages : 47 ![]() |
En réalité, voilà l'exception que j'ai au retour du web service et qui me fait pensé que c'est un problème de charset (plus de détail en pj.) :
Citation:
De toute évidence le charset doit être changer lui aussi (chose que je n'arrive pas à faire), mais sur tes conseils je vais explorer aussi la piste du WS lui-même. |
|
|
|
00
|
|
|
#4 |
![]() ![]() Inscription : août 2005 Messages : 8 293 ![]() |
On dirait qu'il y a les deux problèmes, en fait. Le client s'attend à avoir une réponse en UTF-8 mais le prologue XML du message de réponse parle de ISO-8859-1. Il faut faire en sorte que les 2 concordent.
__________________
![]() Du détail, du détail, du détail !!! Revenons à la source : lisons la documentation et les fichiers de trace, la réponse à notre problème s'y trouve sans doute
|
|
|
00
|
|
|
#5 |
|
Invité de passage
![]() Inscription : juin 2008 Messages : 47 ![]() |
Justement je n'arrive pas à formater ma réponse en UTF-8, je crois que ça viens d'une configuration d'Apache mais je ne sais pas laquelle.
Je ne maîtrise pas trop les Web Service, donc je ne sais pas où exactement se forme l'enveloppe de ma réponse. Et je ne comprend pas non plus pourquoi les < > de mon xml de retour deviennent des < et > J'ai cru que les 2 problèmes étaient liés mais là j'ai plus d'idée ... |
|
|
00
|
|
|
#6 |
![]() ![]() Inscription : août 2005 Messages : 8 293 ![]() |
Comme je dis, je pense qu'il y a 2 problèmes. Essaie de les aborder séparément. Vois d'abord pour les < en examinant une à une les couches concernées pour voir où apparaît le problème : commence par le Web service, puis le serveur sur lequel il tourne, puis Apache. Quand ce sera résolu, tu passeras sur cette histoire d'UTF-8.
__________________
![]() Du détail, du détail, du détail !!! Revenons à la source : lisons la documentation et les fichiers de trace, la réponse à notre problème s'y trouve sans doute
|
|
|
00
|
|
|
#7 |
|
Invité de passage
![]() Inscription : juin 2008 Messages : 47 ![]() |
Mais justement je me demande si en réglant cette histoire de UTF-8 j'aurai plus de facilité à résoudre les < et >
Je crois que ces 2 problèmes sont plus ou moins liés. Mais de toute manière je ne sais pas quoi faire pour réglé un de ces 2 problèmes, t'aurais pas une piste ? au moins pour configurer le charset de retour d'Apache ? |
|
|
00
|
|
|
#8 |
![]() ![]() Inscription : août 2005 Messages : 8 293 ![]() |
Le charset défini dans le fichier XML est ISO-8859-1 donc il faut qu'Apache renvoie un en-tête Content-Type avec le charset ISO-8859-1, donc plutôt mettre
Je pense que ta configuration de la directive Header n'est pas bonne : sachant que l'en-tête qui indique le jeu de caractères est Content-Type et que la doc de l'en-tête Header dit que le paramétrage de Header doit être "Header set header [value]", si tu veux utiliser Header il faut faire comme ça : Code :
Header set Content-Type "text/xml; charset=ISO-8859-1"
__________________
![]() Du détail, du détail, du détail !!! Revenons à la source : lisons la documentation et les fichiers de trace, la réponse à notre problème s'y trouve sans doute
|
|
|
00
|
|
|
#9 |
|
Invité de passage
![]() Inscription : juin 2008 Messages : 47 ![]() |
Je viens d'essayer de le rajouter dans le httpd.conf (C:\Program Files (x86)\Apache Software Foundation\Apache2.2\conf\httpd.conf), mais ça ne change rien du tout.
J'ai essayé autant avec le ISO-8859-1 et le UTF-8 en redemarrant Apache à chaque fois, mais il n'y a aucun changement. A chaque fois que j'ai essayé de rajouter des directives dans le .conf, je n'ai jamais eu de changement... Tu crois qu'il y a un endroit précis dans le .conf où on doit mettre ces instructions ? |
|
|
00
|
|
|
#10 |
![]() ![]() Inscription : août 2005 Messages : 8 293 ![]() |
Ca dépend : si tu as un hôte virtuel, il faut mettre le AddDefaultCharset dans le VH, sinon n'importe où dans le fichier.
Quand tu mets cette directive, le client répond toujours avec le message qui dit que le fichier est ISO-8859-1 alors que le serveur annonce de l'UTF-8 ?
__________________
![]() Du détail, du détail, du détail !!! Revenons à la source : lisons la documentation et les fichiers de trace, la réponse à notre problème s'y trouve sans doute
|
|
|
00
|
|
|
#11 |
|
Invité de passage
![]() Inscription : juin 2008 Messages : 47 ![]() |
Je n'ai pas d'hôte virtuel (pas à ma connaissance en tout cas).
En fait quel que soit la directive que je met dans le .conf, le serveur renvoit toujours une réponse avec un enveloppe en ISO-8859-1 alors que le client attend justement une réponse en UTF-8 ... |
|
|
00
|
|
|
#12 |
![]() ![]() Inscription : août 2005 Messages : 8 293 ![]() |
Apache ne modifie pas l'enveloppe. Il peut décider de quelques en-têtes HTTP à envoyer au client mais renvoie tel quel le contenu au client. Si le prologue XML n'est pas bon, ce n'est pas la faute à Apache mais au service Web.
__________________
![]() Du détail, du détail, du détail !!! Revenons à la source : lisons la documentation et les fichiers de trace, la réponse à notre problème s'y trouve sans doute
|
|
|
00
|
|
|
#13 |
|
Invité de passage
![]() Inscription : juin 2008 Messages : 47 ![]() |
C'est bon j'ai résolu le problème des < et >.
J'ai ajouté l'attribut xsi:type="ns2:any" au message de retour. En revanche j'ai toujours mon problème de charset et je n'arrive pas à trouver la source. Dans le code de mon web service, je n'ai pas accès à ce niveau d'échange, je ne peut jouer que sur le message de retour lui-même et non l'enveloppe (et encore moins l'entête). Le Web Service est développé en Windev, concrètement sur le serveur Apache, il n'y a qu'une librairie qui contient les "action" du WS et un descriptif xml. Je ne sais pas où se forme cette enveloppe ni cette entête. Où se forme-elle exactement ? |
|
|
00
|
Copyright © 2000-2012 - www.developpez.com