发送到 HTTP 后骆驼主体为空

Camel body empty after sending to HTTP

使用 HTTP 组件,Camel 似乎用 HTTP 响应主体替换主体。我想在 发送 之后记录我发送的正文。以下带有 streamCaching() 的内容不起作用,似乎已替换为响应正文:

from("direct:in")
    .streamCaching()
    .to("https://myEndpoint")
    .log(LoggingLevel.INFO, LOG, EVENT_SENT_MARKER, "body - ${body}")

也尝试过ignoreResponseBody。相同的结果:

from("direct:in")
    .streamCaching()
    .to("https://myEndpoint?ignoreResponseBody=true")
    .log(LoggingLevel.INFO, LOG, EVENT_SENT_MARKER, "body - ${body}")

最后,由于 Camel 的文档说它将 exchange.out 的正文设置为 http 响应正文,我尝试 ${in.body} 结果相同:

from("direct:in")
    .streamCaching()
    .to("https://myEndpoint?ignoreResponseBody=true")
    .log(LoggingLevel.INFO, LOG, EVENT_SENT_MARKER, "body - ${in.body}")

任何人都可以帮助阐明这一点吗?

您可以将 bod 存储在 header 中,例如:

from("direct:in")
    .streamCaching()
    .setProperty("MyBody").body()
    .to("https://httpbin.org/post")
    .log("${exchangeProperty.MyBody}")

这样您就可以访问您发送的 body 以及您服务的答复。