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

基于Apache Camel+Jetty组件发起GET请求获取JSON响应的问题

使用Apache Camel Jetty组件调用DWD WFS服务获取JSON响应

嘿,我看你已经有了一个不错的起步,下面帮你补全并优化这段代码,确保能成功获取目标WFS服务的JSON响应:

完整可运行代码片段

import org.apache.camel.Exchange;
import org.apache.camel.builder.RouteBuilder;

public class DwdWfsRoute extends RouteBuilder {
    @Override
    public void configure() throws Exception {
        from("direct:dwd")
            // 指定要调用的HTTPS主机,通过Jetty组件发起请求
            .to("jetty:https://maps.dwd.de")
            // 设置请求的路径部分(和你已有的代码对应)
            .setHeader(Exchange.HTTP_PATH, simple("/geoserver/dwd/ows"))
            // 补全完整的查询参数——注意这里直接用&就行,不用HTML转义的&
            .setHeader(Exchange.HTTP_QUERY, simple("service=WFS&version=2.11.0&request=GetFeature&typeName=dwd:RBSN_RR&outputFormat=application/json"))
            // 明确告诉服务我们要JSON格式的响应(可选,但能避免意外返回XML)
            .setHeader(Exchange.ACCEPT_CONTENT_TYPE, simple("application/json"))
            // 这里可以换成你需要的响应处理逻辑,比如存文件或者转发到其他系统
            .log("拿到的JSON响应:${body}");
    }
}

几个关键注意点

  • Jetty端点写法:用jetty:https://maps.dwd.de指定目标服务的主机和协议,Camel会通过Jetty组件帮你发起HTTPS请求。
  • 查询参数修正:你原来代码里的&是HTML转义后的符号,在Camel的simple表达式里直接用普通的&就可以,不需要转义。
  • 响应格式指定:添加ACCEPT_CONTENT_TYPE头是个好习惯,能确保服务返回我们想要的JSON,而不是默认的XML格式。
  • 自定义处理逻辑:最后那句log只是示例,你可以根据需求改成to("file:/your/local/path/save.json")把响应存到本地,或者对接其他业务组件。

如何测试这个路由

如果你想快速验证,可以用这段代码触发路由:

import org.apache.camel.CamelContext;
import org.apache.camel.ProducerTemplate;
import org.apache.camel.impl.DefaultCamelContext;

public class TestDwdRoute {
    public static void main(String[] args) throws Exception {
        CamelContext context = new DefaultCamelContext();
        context.addRoutes(new DwdWfsRoute());
        context.start();

        // 发送空消息到direct:dwd端点,触发请求
        ProducerTemplate template = context.createProducerTemplate();
        String jsonResponse = template.requestBody("direct:dwd", null, String.class);
        System.out.println("最终响应:" + jsonResponse);

        context.stop();
    }
}

如果需要设置超时、代理这类进阶配置,还可以给Jetty端点加参数,比如jetty:https://maps.dwd.de?connectTimeout=5000&socketTimeout=10000来设置5秒连接超时和10秒读取超时。

内容的提问来源于stack exchange,提问作者Jeremy Puchta

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.27 03:28:28