16.7. camel-cxf のレスポンスを xml 処理命令で開始させる方法
PHP などの SOAP クライアントを使用している場合、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 [...]
この問題を解決するには、以下の WriteXmlDeclarationInterceptor のように、StaxOutInterceptor に XML 開始ドキュメントを書き込むように指示するだけです。
別の方法として、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);