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

Java 8如何发送HTTP GET请求获取Bearer Token并解析返回JSON

Java 8 环境下获取Bearer Token实现方案

给出的curl命令逻辑为:向鉴权接口发送带URL编码用户名、密钥参数的GET请求,从返回的JSON中提取Value字段作为Bearer Token,Java 8下的等效实现如下:

可直接复用的实现代码

代码使用JDK原生网络组件发起请求,JSON解析部分以常用的Jackson为例,如果你项目中已有其他JSON工具(Gson、Fastjson等)可直接替换解析逻辑:

import java.io.BufferedReader;
import java.io.InputStreamReader;
import java.net.HttpURLConnection;
import java.net.URL;
import java.net.URLEncoder;
import java.nio.charset.StandardCharsets;
import com.fasterxml.jackson.databind.JsonNode;
import com.fasterxml.jackson.databind.ObjectMapper;

public class TokenFetcher {
    /**
     * 调用鉴权接口获取Bearer Token
     * @param username 接口用户名
     * @param secret 接口密钥
     * @return 提取到的Bearer Token值
     * @throws Exception 网络、解析异常
     */
    public static String fetchBearerToken(String username, String secret) throws Exception {
        // 对参数做URL编码,完全对齐curl --data-urlencode的处理逻辑
        String encodedUsername = URLEncoder.encode(username, StandardCharsets.UTF_8.name());
        String encodedSecret = URLEncoder.encode(secret, StandardCharsets.UTF_8.name());
        String queryStr = String.format("username=%s&secret=%s", encodedUsername, encodedSecret);
        URL apiUrl = new URL("https://api.company.com/api/auth?" + queryStr);

        HttpURLConnection connection = (HttpURLConnection) apiUrl.openConnection();
        connection.setRequestMethod("GET");
        // 按需调整超时时间,单位毫秒
        connection.setConnectTimeout(5000);
        connection.setReadTimeout(10000);

        StringBuilder responseContent = new StringBuilder();
        // 自动关闭流资源
        try (BufferedReader br = new BufferedReader(
                new InputStreamReader(connection.getInputStream(), StandardCharsets.UTF_8))) {
            String line;
            while ((line = br.readLine()) != null) {
                responseContent.append(line);
            }
        } finally {
            connection.disconnect();
        }

        // 解析响应JSON,提取Value字段
        ObjectMapper mapper = new ObjectMapper();
        JsonNode respNode = mapper.readTree(responseContent.toString());
        return respNode.get("Value").asText();
    }

    // 调用示例
    public static void main(String[] args) throws Exception {
        String token = fetchBearerToken("替换为你的实际用户名", "替换为你的实际secret");
        System.out.println("获取到的Token:" + token);
        // 后续调用其他接口时,在请求头添加 Authorization: Bearer <token> 即可完成鉴权
    }
}

注意事项

  • 如果不需要引入第三方JSON库,也可以手动截取响应字符串中的Value字段值,但鲁棒性较差,生产环境不推荐。
  • 生产使用时建议增加响应状态码判断:在读取响应流前先校验connection.getResponseCode()是否为200,非200状态下从错误流读取返回信息做异常处理。
  • 代码默认接口返回的Value字段在JSON最外层,如果字段存在嵌套,调整JSON解析的取值路径即可。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.29 17:03:16