You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.04.23 07:49:08