WCF和自定义文本编码 – 凌乱的业务

我这里有一个非常奇怪的WCF问题……

我们正在连接一个糟糕的第三方Web服务;这是一个噩梦甚至让它继续下去,我们不得不创建一个自定义的WCF绑定,因为那些人​​决定使用“ISO-8859-1”作为他们的文本编码(而不是像网络上的其他人一样使用UTF-8),以及其他设置也很混乱 – 当然没有在任何地方记录……

它现在已经工作了一段时间,但突然之间,我们的一些数据又重新出现了.我们希望能够找到地方的名字,并且在瑞士,其中一些有德国变形金刚.但在过去的两三个月里,我们突然回来了

Hünibach

而不是正确的

Hünibach

所以ü(你的破坏声)被破坏了.

没问题,我认为他们最终切换到UTF-8,我改变了我的自定义绑定使用UTF-8作为其文本编码器而不是ISO-8859-1 – 但没有运气 – 不,我得到:

EXCEPTION: System.ServiceModel.Security.MessageSecurityException
The HTTP request was forbidden with client authentication scheme ‘Basic’.

什么f ?????该服务受用户/密码的保护,我们使用WCF的ClientCredentials传入该用户名/密码.似乎改变文本编码会以某种方式弄乱凭证!?!?!奇怪的…..

好的 – 回到ISO-8859-1,我只是试图将响应有效载荷解释为UTF-8 – 再次没有运气:-(尝试使用UTF-16,UTF-32,UTF-7甚至,Unicode,BigEndianUnicode – 所有无济于事.

那么我怎么回到我的正确的变形虫,仍然可以称之为血腥的服务…在SoapUI中工作得很好,顺便说一下……

有任何想法吗??我拼命地抓住你可能扔给我的任何吸管!!

最佳答案 尝试检查您要返回的数据,看看他们用来表示它的数字代码.变音符号是8859-1中与其他角色共享代码的其中一个字符.

参见 – http://en.wikipedia.org/wiki/%C3%9C#Typography中的第二段

点赞