Camel 中的引号 Content-Type header

Quotation marks in Camel Content-Type header

我正在尝试使用 camel-http4 调用 SOAP 服务。此服务要求我发送以下 header: Content-Type: application/soap+xml;charset=UTF-8;action="ListBerichten"。我必须包含引号,否则服务将 return 一个 400 代码

当我用 Postman 或 SoapUI 或 curl 这样的客户端尝试时,它工作正常,但是当我用 Camel 尝试时,它无法识别 'action'。

(卷曲 header 看起来像这样) --header 'Content-Type: application/soap+xml;charset=UTF-8;action="ListBerichten"'

我怀疑它与 ListBerichten 周围的引号有关,但我无法弄清楚它是什么。

我的 Camel Route(我正在为 SSL 配置使用自定义的 http4 实现):

        from("direct:d.receive.{{name}}.listberichten").routeId("ReceiveListBerichten")
                .to("xslt:file:{{xslt.cdm.to.target.listberichten}}?saxon=true")
                .setHeader(Exchange.HTTP_METHOD).simple("POST")
                .setHeader("Content-Type").simple("{{soap.contentType.listberichten}}")
                .to("mTlsHttpComponent://{{request.url}}/{{request.url.path}}?useSystemProperties=true&throwExceptionOnFailure=true").id("Receive3")
        ;

和我的财产

xslt.cdm.to.target.listberichten=\/data\/resources\/...
soap.contentType.listberichten=application/soap+xml;charset=UTF-8;action="ListBerichten"

request.url=...
request.url.path=...

logging.show.info=showAll=true

我得到的回复:

<?xml version="1.0" encoding="utf-8"?>
<soap:Envelope xmlns:soap="http://www.w3.org/2003/05/soap-envelope">
    <soap:Body>
        <soap:Fault>
            <soap:Code>
                <soap:Value>soap:Sender</soap:Value>
            </soap:Code>
            <soap:Reason>
                <soap:Text xml:lang="nl">Err: Unknown SOAPAction:</soap:Text>
            </soap:Reason>
        </soap:Fault>
    </soap:Body>
</soap:Envelope>

我试过用反斜杠转义引号,用 UTF-8 编码字符替换引号,将 header 设置为字符串文字并在单独的 [=37] 中设置 'action' =] 但似乎没有任何效果。 Content-Type header中的引号需要怎么处理?

action 参数是在 SOAP 版本 1.2 中设置 SOAP 操作的默认方式。然而,HTTP 组件解析 content-type 值。您可以使用替代方法:

  1. netty-http 组件(自 Camel 2.14 起)
  2. vertx-http 组件(自 Camel 3.5 起)

两个组件都不解析 header 值。