我正在尝试使用 Apache Camel 实现类似 HTTP 代理的功能。在我的代理中,我想在 DB 中插入一个标头值,我在 SQL 中使用了简单表达式。
这是我的骆驼路线。
<route>
<from uri="servlet:///foo" />
<to uri="sql:INSERT INTO TEST_TABLE (TEST_ID, NAME)
VALUES(:#${header.testId}, 'test')?noop=true&dataSource=testDataSource" />
<to uri="http4://localhost:8080/test/bar?bridgeEndpoint=true" />
</route>
我能够插入标头值,但在此路由中的 SQL 端点之后丢失了请求正文。响应是 400。
例外是
HTTP operation failed invoking http://localhost:8080/test/bar with statusCode: 400
我发现原因是简单的表达。但是,我不知道为什么 Simple Expression 会删除请求正文,以及如何解决此问题。