我正在尝试调用在我的计算机之外运行的外部Web服务,并且我已经使用camel框架编写了路由逻辑。
路由代码:
from("direct:test1").process(new Processor() {
@Override
public void process(Exchange arg0) throws Exception {
arg0.getOut().setBody("testmessage");
}
}).to("cxf://http://localhost:8085/FinEdge-General/xrmServices/2011/Organization.svc?serviceClass=com.hcl.flsl.integration.msdn.crmwcf.IOrganizationService&defaultOperationName=Retrieve")
但是当我执行程序时,我得到下面的错误。
错误
org.apache.cxf.transport.http.HTTPException:HTTP响应'415:无法处理消息,因为内容类型“text/xml;字符集=UTF-8'不是预期的类型'application/soap+xml;当与以下对象进行通信时,请使用
注意:Web服务是在.NET(WCF)和SOAP 1.2中开发的。
2条答案
按热度按时间qvk1mo1f1#
看起来CXF正在使用SOAP 1.1发送消息,您需要通过应用WSDL文件让它切换到SOAP 1.2,因为您使用的serviceClass没有该信息。
顺便说一句,您可以发现SOAP 1.1消息和SOAP 1.2消息here之间的区别。
wbrvyc0a2#
正如@Willem Jiang提到的,您必须将SOAP版本更改为1.2。我以编程方式进行更改: