Camel org.apache.cxf.transport.http.HTTPException:HTTP响应'415

ddarikpa  于 2022-11-07  发布在  Apache
关注(0)|答案(2)|浏览(228)

我正在尝试调用在我的计算机之外运行的外部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中开发的。

qvk1mo1f

qvk1mo1f1#

看起来CXF正在使用SOAP 1.1发送消息,您需要通过应用WSDL文件让它切换到SOAP 1.2,因为您使用的serviceClass没有该信息。
顺便说一句,您可以发现SOAP 1.1消息和SOAP 1.2消息here之间的区别。

wbrvyc0a

wbrvyc0a2#

正如@Willem Jiang提到的,您必须将SOAP版本更改为1.2。我以编程方式进行更改:

service = Service.create("your service name");
service.addPort("your port", SOAPBinding.SOAP12HTTP_BINDING, "your url");

相关问题