使用Apache Camel + Jetty组件获取GET请求

时间:2018-05-05 13:13:44

标签: json apache http apache-camel jetty

我目前正在尝试使用Apache Camel及其Jetty组件从以下URL获取JSON-Response:

  

https://maps.dwd.de/geoserver/dwd/ows?service=WFS&version=2.11.0&request=GetFeature&typeName=dwd:RBSN_RR&outputFormat=application%2Fjson

此时,我有以下代码段:

public void configure() {
    from("direct:dwd")
            .setHeader(Exchange.HTTP_PATH, simple("/geoserver/dwd/ows"))
            .setHeader(Exchange.HTTP_QUERY, simple("service=WFS&version=2.11.0&request=GetFeature&typeName=dwd:RBSN_RR&outputFormat=application%2Fjson"))
            .setHeader(Exchange.HTTP_PATH, simple("GET"))
            .to("jetty:https://maps.dwd.de")
            .log("${body}");
}

我该怎么做才能获得JSON-Response?

1 个答案:

答案 0 :(得分:1)

这个问题在评论中得到了解决。

问题是指定的请求方法标头错误。请求方法应使用.setHeader(Exchange.HTTP_METHOD, simple("GET"))指定。在此更改后,路线有效。

但是,如Jetty component documentation中所述,不推荐使用jetty组件作为生产者。对于制作人,建议使用HTTP componentHTTP4 componentNetty4 HTTP component

使用HTTP组件的工作路线:

from("direct:dwd")
        .setHeader(Exchange.HTTP_PATH, simple("/geoserver/dwd/ows"))
        .setHeader(Exchange.HTTP_QUERY, simple("service=WFS&version=2.11.0&request=GetFeature&typeName=dwd:RBSN_RR&outputFormat=application%2Fjson"))
        .setHeader(Exchange.HTTP_METHOD, simple("GET"))
        .to("https://maps.dwd.de")
        .log("${body}");