Question

J'ai un problème de WCF vraiment bizarre ici ...

Nous vous connectez à un service Web tiers merdique; ce fut un cauchemar pour obtenir même ça va, nous devions créer un WCF personnalisé contraignant car ces gars-là ont décidé d'utiliser « ISO-8859-1 » comme encodage de texte (au lieu de UTF-8 comme tout le monde sur le web), et les autres paramètres étaient en désordre, trop - et non documenté nulle part, bien sûr ...

Il a travaillé ok pour un certain temps maintenant, mais tout à coup, certains de nos données à revenir dans mutilée vers le haut. Nous nous attendons à récupérer des noms de lieux, et d'être en Suisse, certains d'entre eux ont trémas allemands en eux. Mais depuis deux ou trois mois, nous obtenons soudainement

Hünibach

au lieu du répertoire

Hünibach

Ainsi, le U (u tréma) est mutilé.

Pas de problème, je me suis dit ils ont finalement commuté en UTF-8, et je changé ma liaison personnalisée à l'utilisation UTF-8 comme encodeur de texte au lieu de la norme ISO-8859-1 - mais pas de chance - non, je reçois:

EXCEPTION: System.ServiceModel.Security.MessageSecurityException
La requête HTTP a été interdit avec le schéma d'authentification du client 'Basic'.

Qu'est-ce que la f ????? Le service est protégé par un nom d'utilisateur / mot de passe que nous passons à l'aide de la ClientCredentials de WCF. Il semble que la modification du codage du texte salit en quelque sorte les pouvoirs!?!?! Bizarre .....

OK - Retour à l'ISO-8859-1, et je viens d'essayer d'interpréter la charge utile de réponse en UTF-8 - encore une fois pas de chance :-( essayées avec UTF-16, UTF-32, UTF-7 même, Unicode, BigEndianUnicode -. en vain

Alors comment diable puis-je récupérer mes propres trémas, et toujours être en mesure d'appeler ce service sanglant ... fonctionne très bien dans SoapUI, btw .....

Toutes les idées ?? Je saisir désespérément à tout pailles que vous pourriez me jeter !!

Était-ce utile?

La solution

Essayez les données d'inspection récupérons et voir ce que les codes numériques qu'ils utilisent pour le représenter. Tréma est l'un de ces personnages 8859-1 que le code des actions avec d'autres caractères.

Voir le deuxième paragraphe à - http://en.wikipedia.org/wiki/ % C3% 9C # Typographie

Autres conseils

En fait, je enfin compris quel était le problème.

Pour une raison quelconque, changer l'échantillon CustomTextEncoder (fourni par Microsoft dans les WCF et WF échantillons) pour utiliser UTF-8 au lieu de l'ISO-8859-1 ne fonctionne pas .

Par contre, arrachant l'encodeur texte personnalisé à partir de ma liaison personnalisée et juste en utilisant le TextMessageEncoder standard WCF fournit du go get (qui utilise UTF-8 par défaut) a fait travail .

Ne me demandez pas pourquoi .... c'est juste les faits que j'ai trouvé .....

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top