Thanks. My route is a little bit different and I don't want to write the
request "by hand" like that. What I'm doing is:
process(populateBeanProcessor). // 1
marshal(soapJaxbDataFormat). // 2
to(fooService). // 3
etc()
1 = processor creates a JAXB bean which represents my request
2 = JAXB bean is converted into SOAP XML message
3 = we call web service
I ended up writing a CXF interceptor for setting the http header:
public class Utf8SoapRequestInterceptor extends
AbstractPhaseInterceptor<Message> {
public Utf8SoapRequestInterceptor() {
super(Phase.MARSHAL);
}
@Override
public void handleMessage(Message message) throws Fault {
Map<String, List> headers = (Map<String, List>)
message.get(Message.PROTOCOL_HEADERS);
try {
headers.put("Content-Type",
Collections.singletonList(message.get("application/soap+xml;charset=UTF8")));
} catch (Exception ce) {
throw new Fault(ce);
}
}
}
<camelcxf:cxfEndpoint id="fooService"
address="${bla.cxf}"
serviceClass="bla._1_0.UraPort">
<camelcxf:outInterceptors>
<bean class="bla.Utf8SoapRequestInterceptor" />
</camelcxf:outInterceptors>
<camelcxf:properties>
<entry key="dataFormat" value="MESSAGE"/>
<entry key="loggingFeatureEnabled" value="true"/>
</camelcxf:properties>
</camelcxf:cxfEndpoint>
This works and I get the response in UTF-8.
I would be interested if the same was possible somehow declaratively,
without writing code?
--
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-tp5745394p5745427.html
Sent from the Camel - Users mailing list archive at Nabble.com.