2010-07-23 11 views
2

J'ai une question sur l'envoi de XML en tant que chaîne dans un Webservice. Un de nos fournisseurs a développé un service web que nous devrions utiliser. Leur webservice est fondamentalement juste un mécanisme de transport pour leurs propres messages de demande/réponse, par ex. La classe MyRequest est sérialisée à une chaîne XML en utilisant JAXB passée à une méthode setRequest dans leur webservice, probablement parce que c'était le moyen le plus facile pour eux ou peut-être parce qu'ils voulaient une transparence élevée dans leur application ... eh bien je ne sais pas.JAX-WS et questions de codage de caractères

De toute façon. Voici ma question. Si j'ai un WebService avec un codage de caractères ISO_8859-1 mais que le XML sérialisé a un codage de caractères UTF-8 (ou tout autre encodage supportant plus de caractères que ISO_8859-1), ceux-ci seront-ils toujours sérialisés et désérialisés correctement? Ou dois-je envoyer des informations sur le contenu de la chaîne? Et si oui, comment puis-je faire cela?

Le côté serveur du service Web est écrit en .NET. Comment est la compatibilité entre Java et .NET? Existe-t-il des encodages en .NET qui ne sont pas supportés en Java ou vice versa?

/Andreas

Répondre

0

Si elles mettent en œuvre correctement le service Web (et vous aussi), vous n'avez pas à vous soucier de l'encodage des caractères, parce que:

  1. (bien formé) XML a intégré des métadonnées qui permet l'encodage de caractères qui a été utilisé pour trouver exactement et
  2. XML permet à tout caractère Unicode d'être représenté dans un encodage, en raison de numeric character references
Donc, pour résumer: assurez-vous que les deux parties traitent leur texte dans un environnement compatible Unicode (C# et Java conviennent) et utilisez des bibliothèques XML correctes (les deux environnements sont fournis) et dès que vous ne le faites pas manuellement, ça devrait aller. O
+0

Okey, donc si le webservice a un codage de caractères UTF_8859-1 et que le XML sérialisé inclus possède un codage de caractères UTF-8, la chaîne ci-jointe sera échappée. Est-ce exact? Que se passe-t-il si la chaîne sérialisée incluse est enveloppée dans une section CDATA, je suppose que cela sera encore valide puisqu'il s'agit de données de caractères, n'est-ce pas? –

+0

Pas vraiment. XML à l'intérieur d'autres XML n'a pas vraiment son propre encodage, puisqu'il s'agit simplement de texte Unicode dans le XML externe (et en tant que tel a le même encodage). Tous les caractères non représentables dans le codage out XMLs seront représentés par des références de caractères numériques. –