Java 如何在CXF客户端中设置SOAP响应的编码?

Java 如何在CXF客户端中设置SOAP响应的编码?,java,web-services,soap,cxf,Java,Web Services,Soap,Cxf,我正在使用ApacheCXF创建一个SOAP客户端。web服务响应包含以下umlaut字符:[0xc3][0x9c],它是一个Ü 当然,我可以在读取响应时手动转换此字段,如: String utfString = new String(isoString.getBytes("ISO-8859-1"), "utf-8"); 但是我更愿意将客户机设置为自动将ISO转换为UTF8字符串 问题:如何在CXF客户端中为任何传入请求全局配置此选项?您可以如下所示设置编码 @Bean public

我正在使用ApacheCXF创建一个SOAP客户端。web服务响应包含以下umlaut字符:
[0xc3][0x9c]
,它是一个
Ü

当然,我可以在读取响应时手动转换此字段,如:

String utfString = new String(isoString.getBytes("ISO-8859-1"), "utf-8");
但是我更愿意将客户机设置为自动将ISO转换为UTF8字符串


问题:如何在CXF客户端中为任何传入请求全局配置此选项?

您可以如下所示设置编码

@Bean
    public KPWs kpMath(SpringBus bus) {
        final JAXWSSpringClientProxyFactoryBean client = new JAXWSSpringClientProxyFactoryBean();
        client.setBus(bus);
        client.setAddress("http://localhost:8080/services/ws ?wsdl");
        client.getFeatures().add(new LoggingFeature());
        Map<String, Object> map = new HashMap<>();
        map.put("org.apache.cxf.message.Message.ENCODING", "ISO-8859-1");
        client.setProperties(map);
        return client.create(KPWs.class);

    }
@Bean
公共KPWs kpMath(SpringBus巴士){
最终的JAXWSSpringClientProxyFactoryBean客户端=新的JAXWSSpringClientProxyFactoryBean();
客户机.立博(巴士);
client.setAddress(“http://localhost:8080/services/ws “wsdl”);
client.getFeatures().add(新的LoggingFeature());
Map Map=newhashmap();
map.put(“org.apache.cxf.message.message.ENCODING”,“ISO-8859-1”);
client.setProperties(map);
返回client.create(KPWs.class);
}

修复web服务-它应该在内容类型上正确设置“charset=utf8”属性。我无法控制web服务。如果应该的话,但这是不可能的。我们认为/soap/http并不完全是微软的新技术。您应该报告一个bug,并根据您与供应商的关系,推动修复。否则,您可能会考虑代理服务器添加正确的标题,这样您就可以将客户端代码中的代码保留下来。有人会在几年后修复we服务时感谢您,因为在大多数公司,从代理服务器中删除规则要比将java应用程序重新部署到生产环境中容易得多。