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

Spring环境下如何通过带认证Token的API获取并解析JSON

问题解答

1. Jackson的ObjectMapper.readValue()无法直接添加请求头

readValue()只是JSON解析工具,它的作用是把输入的字节流、字符串转换成Java对象,根本不负责HTTP请求的发送。你之前能调用无Token的API,应该是通过URL.openStream()这类简单方式先拿到了API的响应流,再传给readValue()——但这种方式没法自定义请求头,所以才会返回403权限错误。

2. 解析JSON与请求认证是独立环节,Jackson/Spring注解只负责解析

不管API是否需要Token认证,只要你能拿到合法的JSON响应,用Jackson的@JsonProperty、Spring的@JsonAlias这类注解解析的方式完全一致。认证是HTTP请求阶段要处理的事,解析是拿到响应后的操作,两者互不影响。

3. 没必要用原生Java HttpRequest,Spring生态有更简便的实现方式

方案一:Spring RestTemplate(适合传统Spring项目)

直接在请求头中携带Token,发送请求后可直接让RestTemplate帮你解析成目标对象:

// 初始化RestTemplate实例
RestTemplate restTemplate = new RestTemplate();

// 构造请求头,添加Token(注意格式,多数API要求Bearer前缀)
HttpHeaders headers = new HttpHeaders();
headers.set("Authorization", "Bearer " + "你的个人Token");
HttpEntity<Void> requestEntity = new HttpEntity<>(headers);

// 发送GET请求并自动解析为目标类对象
YourTargetClass apiResult = restTemplate.exchange(
        "https://目标API的完整地址",
        HttpMethod.GET,
        requestEntity,
        YourTargetClass.class
).getBody();

方案二:Spring WebClient(适合Spring Boot 2.x及以上,支持响应式场景)

// 初始化WebClient,全局默认添加Token请求头
WebClient webClient = WebClient.builder()
        .baseUrl("https://目标API的域名")
        .defaultHeader("Authorization", "Bearer " + "你的个人Token")
        .build();

// 发送请求并解析结果(非响应式场景用block()获取同步结果)
YourTargetClass apiResult = webClient.get()
        .uri("/具体的接口路径")
        .retrieve()
        .bodyToMono(YourTargetClass.class)
        .block();

若坚持使用原生Java(不推荐)

也可以通过HttpRequest添加请求头,拿到响应流后再用Jackson解析:

// 构造带Token的HTTP请求
HttpRequest request = HttpRequest.newBuilder()
        .uri(URI.create("https://目标API的完整地址"))
        .header("Authorization", "Bearer " + "你的个人Token")
        .build();

// 发送请求并获取响应流
HttpResponse<InputStream> response = HttpClient.newHttpClient().send(
        request,
        HttpResponse.BodyHandlers.ofInputStream()
);

// 用Jackson解析响应流为目标对象
ObjectMapper mapper = new ObjectMapper();
YourTargetClass apiResult = mapper.readValue(response.body(), YourTargetClass.class);

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.14 02:52:18