我目前正在尝试使用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 响应?
这个问题在评论中得到了解决。
有问题的请求方法标头指定不正确。应使用.setHeader(Exchange.HTTP_METHOD, simple("GET"))
指定请求方法。在此更改后,路线将正常工作。
但是,使用 jetty 组件作为生产者已被弃用,如 Jetty 组件文档中所述。对于生产者,建议使用 HTTP 组件或 HTTP4 组件或 Netty4 HTTP 组件。
使用 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}");