Hi Daniel.

I fix it with interceptor in the incoming chain. :D

Here my code, i hope can help someone:

public class EncodingInterceptor extends AbstractPhaseInterceptor<Message> {

        public EncodingInterceptor() {
                super(Phase.RECEIVE);
        }

        @Override
        public void handleMessage(Message message) throws Fault {
                String encoding = (String) message.get(Message.ENCODING);
                
                if (encoding == null || !encoding.equals("UTF-8")) {
                        message.put(Message.ENCODING, "UTF-8");
                }
        }

}


Thanks and best regards.

El Miércoles, 13 de marzo de 2013 13:52:41 Daniel Kulp escribió:
> 
> On Mar 13, 2013, at 7:39 AM, Angel L. Garcia <[email protected]> wrote:
> > I´ve a problem with client encoding, when I read some element with special 
> > characters in response I get bad characters like ��
> > 
> > The log in is:
> > 
> > INFO: Inbound Message
> > ----------------------------
> > ID: 1
> > Response-Code: 200
> > Encoding: ISO-8859-1
> > Content-Type: text/xml
> > Headers: {connection=[Keep-Alive], Content-Language=[es-ES], 
> > content-type=[text/xml], Date=[Wed, 13 Mar 2013 08:05:05 GMT], 
> > transfer-encoding=[chunked], X-Backside-Transport=[OK OK]
> > Messages: 
> > Message (saved to tmp file):
> > Filename: /tmp/tomcat6-tomcat6-tmp/cxf-tmp-966013/cos8205745368794988769tmp
> > (message truncated to -1 bytes)
> > 
> > Payload: <?xml version="1.0" encoding="UTF-8"?>
> > <soapenv:Envelope xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"; 
> > ......
> > 
> > I think the problem is that there are two different encodings "Encoding: 
> > ISO-8859-1" and <?xml version="1.0" encoding="UTF-8"?>.
> > Can I change the <?xml version="1.0" encoding="UTF-8"?> to <?xml 
> > version="1.0" encoding="ISO-8859-1"?>?
> > 
> > Thanks and best regards.
> 
> Yea… that seems very wrong to me.  Seems like a bit of an invalid message as 
> I'd expect the Content-Type to set a charset of utf-8.   I would attempt two 
> things:
> 
> 1) Stick an interceptor on the incoming chain that would set:   
> message.put(Message.ENCODING, "UTF-8")   so that CXF would treat it as UTF-8. 
> 
> 2) You can try chaining the <?xml> header via an input stream filter or 
> similar.
> 
> 3) Remove the InputSteam from the message contents, wrapper it with an 
> InputStreamReader using whichever encoding works, and set that into the 
> message content as a Reader.class.   CXF will then delegate to that to handle 
> the charset stuff.
> 
> 
> 
> 
>

Reply via email to