我有一个RESTful Web服务,我想在Camel-Route中使用内容更丰富。 看到类似的代码:
from("direct:in") // Here comes XML
.to("validator:something.xsd") // validate it
.unmarshal("something-jaxb") // put it into a POJO
.setHeader(Exchange.HTTP_URI, simple("http://localhost:12345/restws/${header.foo}")) // Create the dynamic URI with simple
.setHeader(Exchange.HTTP_METHOD, constant("GET")) // set the HTTP-Method to use
.enrich("http://dummy", new MyAggregator()) // fetch some Information from a Restful Webservice
.to("direct:out"); // send the Message to another route
如果我运行此命令,则会收到以下错误:
No type converter available to convert from type: de.my.Class to the required type: java.io.InputStream with value de.my.Class@620ee765.
在我看来,他试图将Exchange的主体发送到http-Endpoint,尽管我将HTTP-Method设置为GET。我已经阅读了文档(https://camel.apache.org/http.html)和使用GET或POST调用,它描述了选择方法的算法首先查看标题(1.使用标题中提供的方法)
我找到了一些解决方法,它描述了如何将主体移动到Exchange属性并在Webservice-Call之后再将其移回,但这不可能......
编辑:
答案 0 :(得分:1)
无论是rich还是pollEnrich都不支持动态uris用于他们的终端。您可以使用支持动态uris的收件人列表以及聚合策略,而不是使用rich。
答案 1 :(得分:0)
pojo中有什么?您的GET参数应该是资源标识符和查询参数。这需要一个自定义转换器。
http://fusesource.com/docs/esb/4.2/rest/RESTIntro.html
也许可以考虑使用restlet ......我认为这更容易。
答案 2 :(得分:0)
如果它是“资源列表”,那么您可能希望拆分列表并对每个资源进行获取