Apache Camel调用外部API后Body始终为InputStream类型的问题求助
Apache Camel调用外部API后Body始终为InputStream类型的问题求助
大家好,我最近在学习Apache Camel,碰到个棘手的问题:调用外部API返回的Body一直是InputStream类型,就算我把它转成String,再用Jackson序列化成JSON,类型还是没变化。我已经把Stack Overflow上同类问题都翻遍了,试了各种方案都没解决,只好来这儿求助了。
我的路由代码如下:
@Component public class GetInfoRouter extends RouteBuilder { public static final String GET_INFO_TEST = "direct:get-info"; @Override public void configure() throws Exception { from(GET_INFO_TEST) .routeId(GET_INFO_TEST) .streamCaching() .removeHeaders("CamelHttp*") .setHeader(RestConstants.HTTP_METHOD, constant("GET")) .setHeader(RestConstants.CONTENT_TYPE, constant("application/json")) .setHeader(RestConstants.REST_HTTP_QUERY, constant("s=margarita")) // .setHeader("host", constant("thecocktaildb.com")) .to("rest:get:/api/json/v1/1/search.php?host=thecocktaildb.com") .convertBodyTo(String.class) .marshal().json(JsonLibrary.Jackson) .process(ex -> { DrinksDTO drinks = ex.getMessage().getBody(DrinksDTO.class); log.info("Drinks 1 : {}", drinks); }) .log("${body}"); } }
我已经尝试过这些方法,但结果始终没变:
- 先后进行marshal和unmarshal操作
- 移除了
convertBodyTo(String.class)这一步 - 换成netty-http组件调用外部API,Body还是保持InputStream类型
备注:内容来源于stack exchange,提问作者Fábio Silva
相关产品推荐
相关产品推荐

