Codificação de errado em JAX-WS Despacho Response

votos
0

Estou tentando acessar um serviço web com JAX-WS usando:

Dispatch<Source> sourceDispatch = null;
sourceDispatch = service.createDispatch(portQName, Source.class, Service.Mode.PAYLOAD);
Source result = sourceDispatch.invoke(new StreamSource(new StringReader(req)));
System.out.println(sourceToXMLString(result));

Onde:

private static String sourceToXMLString(Source result)
        throws TransformerConfigurationException, TransformerException {
    String xmlResult = null;
    try {
        TransformerFactory factory = TransformerFactory.newInstance();
        Transformer transformer = factory.newTransformer();
        transformer.setOutputProperty(OutputKeys.OMIT_XML_DECLARATION, yes);
        transformer.setOutputProperty(OutputKeys.METHOD, xml);
        transformer.setOutputProperty(OutputKeys.ENCODING, utf-8);
        OutputStream out = new ByteArrayOutputStream();
        StreamResult streamResult = new StreamResult();
        streamResult.setOutputStream(out);
        transformer.transform(result, streamResult);
        xmlResult = streamResult.getOutputStream().toString();
    } catch (TransformerException e) {
        e.printStackTrace();
    }
    return xmlResult;
}

Quando eu imprimir o resultado em uma página utf-8 caracteres utf-8 não são exibidos corretamente.

Desde o WS funciona bem com outras ferramentas (retorna UTF-8 multa), que tendem a pensar que há algum problema com a minha transformação sourceToXMLString () . Este poderia ser destruindo minha codificação?

Publicado 04/05/2009 em 15:18
fonte usuário
Em outras línguas...                            


1 respostas

votos
1

Tente o seguinte:

private static String sourceToXMLString(Source result) throws TransformerConfigurationException, TransformerException {

String xmlResult = null;
try {
    TransformerFactory factory = TransformerFactory.newInstance();
    Transformer transformer = factory.newTransformer();
    transformer.setOutputProperty(OutputKeys.OMIT_XML_DECLARATION, "yes");
    transformer.setOutputProperty(OutputKeys.METHOD, "xml");
    transformer.setOutputProperty(OutputKeys.ENCODING, "utf-8");
    ByteArrayOutputStream out = new ByteArrayOutputStream();
    transformer.transform(result, new StreamResult(out));
    xmlResult = out.toString("UTF-8");
    // or xmlResult = new String(out.toByteArray(), "UTF-8");
} catch (TransformerException e) {
    e.printStackTrace();
}
return xmlResult; 
}
Respondeu 04/05/2009 em 15:54
fonte usuário

Cookies help us deliver our services. By using our services, you agree to our use of cookies. Learn more