如何使用apache camel在soap请求中添加soap标头

时间:2015-07-02 11:29:15

标签: apache web-services soap

我正在调用一个SOAP代理Web服务,它具有标头(用于身份验证)和正文(具有有效负载)。以下是我的肥皂要求。

<soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/" xmlns:prox="http://webservices.com/ProxyService">
    <soapenv:Header>
      <prox:authentication>
         <prox:user>admin</prox:user>
         <prox:password>admin</prox:password>
      </prox:authentication>
    </soapenv:Header>

    <soapenv:Body>
    <!-- Here is the body -->
    </soapenv:Body>
</soapenv:Envelope>

我正在使用apache camel。我能够创造身体。但我无法在代理请求中添加/设置标头。在代理请求到来时,它不包含任何标头。它只包含信封内的Body。 请帮我在soap请求中创建标题。

1 个答案:

答案 0 :(得分:0)

您可以像这样构建一个soap header String

final String soapHeader = "<wsse:Security xmlns:wsse=\"http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-wssecurity-secext-1.0.xsd\" soap:mustUnderstand=\"true\" xmlns:soap=\"http://www.w3.org/2003/05/soap-envelope\"><wsse:UsernameToken><wsse:Username>abhishek</wsse:Username><wsse:Password Type=\"http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-username-token-profile-1.0#PasswordText\">diamond2989</wsse:Password></wsse:UsernameToken></wsse:Security>";

然后在交换期间添加此标题

exchange.getIn().setHeader(SpringWebserviceConstants.SPRING_WS_SOAP_HEADER, soapHeader);

更改字符串以满足您的要求