在camel中调用web服务,将soap请求作为String

时间:2017-03-29 17:32:53

标签: web-services apache-camel

我想使用Apache Camel调用Web服务,并且我以String的形式获得SOAP消息。有谁可以让我知道如何在Camel中以String的形式发送SOAP请求?

2 个答案:

答案 0 :(得分:0)

这取决于您的出站Web服务的端点类型。

  1. 如果它是CXF JAX-WS,那么它取决于dataFormat属性设置为:POJO或PAYLOAD。

    对于POJO,您已经使用SOAP标头,SOAP Body元素,将它们解组为JAXB Pojos,然后将它们设置为Camel Exchange Body正确地将Exchange传递给端点 对于PAYLOAD - 我不确定,但也许您可以将字符串原样(或只是SOAP主体和SOAP标头元素)作为字符串传递。如果没有,请检查当dataFormat为PAYLOAD时CXF期望获得的内容。 (我刚刚用了很长时间)。

  2. 对于简单的http端点,只需将您的字符串“按原样”传递给它,其中Http-method POST和Content-type标头为application/xml

答案 1 :(得分:0)

这是一个简单的例子。如果您需要对SOAP请求字符串执行某些修改,您只需将“常量”更改为“spel”

<setBody><constant><![CDATA[<?xml version="1.0" encoding="UTF-8"?>
<soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/">
<soapenv:Header/>
<soapenv:Body>
  <MyAction>
     <myparam>ABC</myparam>
  </MyAction>
</soapenv:Body>
</soapenv:Envelope>]]></constant></setBody>
<setHeader headerName="SOAPAction"><constant>MySOAPAction</constant></setHeader>
<setHeader headerName="CamelHttpMethod"><constant>POST</constant></setHeader>
<setHeader headerName="Content-Type"><constant>text/xml;charset=UTF-8</constant></setHeader>
<to uri="http://myserver:1234" />