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

使用Camel+Spring Boot发起GET请求返回406,Postman请求正常求助

解决Camel HTTP4请求返回406 Not Acceptable的问题

你遇到的406状态码问题,本质是服务器无法返回符合请求中Accept头要求的内容格式。Postman能正常拿到200和JSON响应,是因为它默认会发送合适的Accept请求头(比如application/json或者*/*),但你的Camel路由里恰好缺少了这个关键配置。

核心修复步骤

  1. 添加Accept请求头:明确告诉服务器你期望接收JSON格式的响应,这是解决406的关键。
  2. 优化HTTP4组件配置:开启bridgeEndpoint参数,确保Camel完全使用你自定义的HTTP_URI配置,避免组件自动拼接地址导致的潜在问题。

修改后的完整路由代码

from(RouteUtils.buildSedaEndpointWithConcurrentConsumers("sedaEndpointin", domain.getThreads()))
    .routeId("routeiD")
    .setProperty("workerId").jsonpath("$.worker_id")
    .setHeader(Exchange.HTTP_METHOD, constant(HttpMethods.GET))
    .setHeader(Exchange.HTTP_QUERY, simple(String.format("key=%s&barcode=${exchangeProperty.workerId}", apiKey)))
    .setHeader(Exchange.HTTP_URI, simple("https://" + endpoint))
    .setHeader("Authorization", simple(Auth))
    .setHeader(Exchange.ACCEPT, constant("application/json")) // 新增:指定接受JSON格式
    .to("http4://" + Endpoint + "?bridgeEndpoint=true") // 开启bridgeEndpoint
    .to("sedaEndpoint");

额外说明

  • Content-Type头在GET请求中其实作用不大(因为GET通常没有请求体),如果你的接口不需要这个头,可以考虑移除它,避免混淆。
  • 如果添加Accept头后还是有问题,可以尝试将Accept设置为*/*(接受任何格式),排查是否是服务器对特定格式的匹配逻辑问题。

内容的提问来源于stack exchange,提问作者Sparkler-blush

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.28 03:47:32