Hi,

You can set the Content-Type through the request message context like this
public void process(final Exchange exchange) {
                Map<String, Object> requestContext = new HashMap<String, 
Object>();
                requestContext.put("Content-Type", 
"application/soap+xml;charset=UTF-8");
                exchange.getIn().setHeader(“RequestContext" , requestContext);
                
                exchange.getIn().setBody("<soap:Envelope 
xmlns:soap=\"http://schemas.xmlsoap.org/soap/envelope/\";>"
                                 + "<soap:Body><ns1:echo 
xmlns:ns1=\"http://cxf.component.camel.apache.org/\";>"
                                 + "<arg0 
xmlns=\"http://cxf.component.camel.apache.org/\";>hello world</arg0>"
                                 + "</ns1:echo></soap:Body></soap:Envelope>");
            }

--  
Willem Jiang

Red Hat, Inc.
Web: http://www.redhat.com
Blog: http://willemjiang.blogspot.com(http://willemjiang.blogspot.com/) 
(English)
http://jnn.iteye.com(http://jnn.javaeye.com/) (Chinese)
Twitter: willemjiang  
Weibo: 姜宁willem



On January 1, 2014 at 10:25:30 PM, jannecamel (jann...@iki.fi) wrote:
>  
> I dug a little deeper. I activated cxf component's loggingFeatureEnabled  
> property. Seems that the response from the WS is encoded with  
> ISO-8859-1:
>  
> request:
>  
> 014-01-01 16:10:01,055 | INFO | ler-ura_Worker-1 | UraPort  
> | 132 - org.apache.cxf.cxf-api - 2.6.8 | Outbound Message
> ---------------------------
> ID: 1
> Address: http://localhost:8080/integraatiot-ws-1.0-SNAPSHOT/UraImpl  
> Content-Type: text/xml
> Headers: {Accept=[*/*],
> breadcrumbId=[ID-vagrant-lubuntu-quantic-42829-1388585068316-7-3],  
> fireTime=[Wed Jan 01 16:10:00 EET 2014], jobDetail=[JobDetail  
> 'DEFAULT.quartz-endpoint82': jobClass:
> 'org.apache.camel.component.quartz.CamelJob isStateful:  
> false isVolatile:
> false isDurable: false requestsRecovers: false],
> jobInstance=[org.apache.camel.component.quartz.CamelJob@3d722847],  
> jobRunTime=[-1], mergedJobDataMap=[org.quartz.JobDataMap@509f17b6],  
> nextFireTime=[Wed Jan 01 16:11:00 EET 2014], refireCount=[0],  
> scheduledFireTime=[Wed Jan 01 16:10:00 EET 2014],
> scheduler=[org.quartz.impl.StdScheduler@236312f7], trigger=[Trigger  
> 'Camel.uraDelegoinnitJob': triggerClass: 'org.quartz.CronTrigger  
> isVolatile: false calendar: 'null' misfireInstruction: 0  
> nextFireTime: Wed
> Jan 01 16:11:00 EET 2014], triggerGroup=[Camel],
> triggerName=[uraDelegoinnitJob]}
> Payload:  
> > xmlns:ns3="http://eura2014.fi/ura/xsd/1.0";>
>  
> ...
>  
>  
>  
>  
> response:
>  
> 2014-01-01 16:15:01,019 | INFO | ault-workqueue-1 | UraPort  
> | 132 - org.apache.cxf.cxf-api - 2.6.8 | Inbound Message
> ----------------------------
> ID: 6
> Response-Code: 200
> Encoding: ISO-8859-1
> Content-Type: text/xml;charset=ISO-8859-1
> Headers: {Content-Length=[2306], content-type=[text/xml;charset=ISO-8859-1],  
> Date=[Wed, 01 Jan 2014 14:15:01 GMT], Server=[Apache-Coyote/1.1]}  
> Payload: > 
> xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/";>somfoostuff....kuvaus  
> jossa viimeinen merkki on skandiÄ
>  
> When I test the same WS with SoapUI, I get the response in UTF-8.  
>  
> Date Wed, 01 Jan 2014 12:47:22 GMT
> Content-Length 2306
> #status# HTTP/1.1 200 OK
> Content-Type application/soap+xml;charset=UTF-8
> Server Apache-Coyote/1.1
>  
> SoapUI seems to have preferences for "request properties / encoding"  
> and
> this results in http header
> "Content-Type:application/soap+xml;charset=UTF-8". And  
> this changes the
> actual WS to return UTF-8 instead of ISO-8859-1.
>  
> Can I configure camel / cxf component to request for UTF-8 encoding  
> as well?
> I could not find a quick param for that at
> http://camel.apache.org/cxf.html#CXF-Thedescriptionsofthedataformats  
>  
>  
>  
>  
>  
> --
> View this message in context: 
> http://camel.465427.n5.nabble.com/Trying-to-consume-SOAP-WS-with-UTF-8-content-getting-Invalid-UTF-8-middle-byte-0x3c-tp5745394p5745396.html
>   
> Sent from the Camel - Users mailing list archive at Nabble.com.  
>  

Reply via email to