为什么这个rest调用有InputStream类型的体,甚至在将其编组成json之后?



我正在尝试学习apache camel,我有问题理解为什么调用外部api返回类型InputStream的主体并保持其类型,即使将其转换为字符串并将其编组为json之后。我已经把所有这种类型的问题都读到了堆栈溢出,但没有任何问题解决我的问题。

@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}");
}
}

已经尝试过编组和解组,删除了convertBodyTo(String.class)并使用不同的组件进行外部调用,在这种情况下,我使用了netty-http,但结果总是相同的。

看起来应该是unmarshal()而不是marshal()

最新更新