Apache Camel的版本为2.18.1
在2.x的文档中,提供了https://camel.apache.org/components/2.x/http4-component.html、getWithBody和选项作为查询参数。
但是,当我在端点URI的末尾连接这两个参数中的一个时,不能将其识别为选项。相反,它作为一个普通的查询参数传递给端点,而其他查询参数选项则作为组件选项处理,而不是转发到端点。
当我检查源代码时,我发现通过与HttpEndpoint (org.apache.camel.component.http4)和HttpCommonEndpoint (org.apache.camel.http.common)类的字段和方法匹配来识别选项。这些类中不存在、getWithBody、和getWithBody字段,而在这些类的字段中可以找到其他选项。
我可以假设文档是错误的吗?如果是这样的话,当http方法是GET或DELETE时,如何实现用HttpComponent(Http4Component)发送体?
发布于 2020-02-26 14:55:57
在Apache 2.19.0中引入了选项deleteWithBody
。见骆驼-10916。
在Apache 3.0.0中引入了选项getWithBody
,并将其移植到2.25.0。见骆驼-14118。
对于这样的旧版本使用github上存档的docs,它不会在网站- https://github.com/apache/camel/blob/camel-2.18.x/components/camel-http4/src/main/docs/http4-component.adoc上发布。
您需要更新到更新的版本,或者实现从HTTP4组件重写某些方法的自定义组件。在2.18.1中没有启用此OOTB的选项。
发布于 2022-06-28 11:58:37
我同意@Bedla的回答。
另外,这就是我们所做的。
我们检查了代码并进行了调试--这让我们意识到,在某个点上是骆驼交互,如果GET调用有一个,它就会掉下身体。它将作为普通的GET请求发送,因为Camel版本3.x.x只支持它。
我们尝试了不同的方法来强行添加身体。这也是失败的,因为我们添加的任何东西都会被骆驼丢弃。
当时我们用的是骆驼v2.22.1。更高的版本,如camel 3.x.x将是一个巨大的飞跃,因为将包含多个更改,所以幸运的是,我们的骆驼团队重新移植了将GET请求(从这里到getWithBody)发送到camel v2.25.0的能力。
代码级别更改:将getWithBody=true
追加到请求URL
更新骆驼模
camel-core-2.25.0.jar
camel-cxf-transport-2.25.0.jar
camel-cxf-2.25.0.jar
camel-core-xml-2.25.0.jar
camel-http-common-2.25.0.jar
camel-jaxb-2.25.0.jar
camel-spring-2.25.0.jar
camel-soap-2.25.0.jar
camel-cdi-2.25.0.jar
camel-jdbc-2.25.0.jar
camel-http4-2.25.0.jar
*特别说明*注意,在每个文件夹位置下,都有一个modules.xml文件。您需要打开它,并将jar文件版本号更改为要使用的版本。在本例中为2.25.0
就这样,快乐编码!
https://stackoverflow.com/questions/60415752
复制相似问题