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 值。您可以使用替代方法:
- netty-http 组件(自 Camel 2.14 起)
- vertx-http 组件(自 Camel 3.5 起)
两个组件都不解析 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 值。您可以使用替代方法:
- netty-http 组件(自 Camel 2.14 起)
- vertx-http 组件(自 Camel 3.5 起)
两个组件都不解析 header 值。