25.8. 如何让 camel-cxf 响应以 xml 处理指令开头
如果您使用一些 SOAP 客户端,如 PHP,您将获得此类错误,因为 CXF 不会添加 XML 处理指令 < ?xml version="1.0" encoding="utf-8"?>
:
Error:sendSms: SoapFault exception: [Client] looks like we got no XML document in [...]
Error:sendSms: SoapFault exception: [Client] looks like we got no XML document in [...]
要解决这个问题,您只需要告诉 StaxOutInterceptor 为您编写 XML 启动文档,如下面的 WriteXmlDeclarationInterceptor 中:
作为替代方案,您可以按照 CxfConsumerTest 所示为它添加一个消息标头:
// set up the response context which force start document Map<String, Object> map = new HashMap<String, Object>(); map.put("org.apache.cxf.stax.force-start-document", Boolean.TRUE); exchange.getOut().setHeader(Client.RESPONSE_CONTEXT, map);
// set up the response context which force start document
Map<String, Object> map = new HashMap<String, Object>();
map.put("org.apache.cxf.stax.force-start-document", Boolean.TRUE);
exchange.getOut().setHeader(Client.RESPONSE_CONTEXT, map);