使用 HttpURLConnection 的不记名令牌 (Java 8)

Bearer token using HttpURLConnection (Java 8)

下午好,

我正在开发一个包含 2 个应用程序的项目,第一个是 php 应用程序,它为我提供 API。 第二个是我正在开发的应用程序(Java 8 base,没有 Spring)我的问题是:我可以使用 HttpURLConnection 对象使用 Bearer 令牌授权吗?

我仍在努力使这项工作有效,但它似乎使“授权”的值无效。

            //responseLogin is the token that the php app provides.
            String token = "Bearer " + responseLogin.toString();
            HttpURLConnection httpApi = (HttpURLConnection) apiUrl.openConnection();
            httpApi = (HttpURLConnection) apiUrl.openConnection();
            httpApi.setRequestMethod("GET");
            httpApi.setDoOutput(true);
            httpApi.setRequestProperty("Content-Type", "application/json");
            httpApi.setRequestProperty("Accept", "*/*");
            httpApi.setRequestProperty("Authorization", token);
            httpApi.setRequestProperty("Connection", "keep-alive");
            httpApi.setRequestProperty("Accept-Encoding", "gzip, deflate, br");
            LOG.info("Token : " + httpApi.getRequestProperty("Authorization"));
            LOG.info("Accept : " + httpApi.getRequestProperty("Accept"));

httpApi.getRequestProperty("授权"));这部分得到了一个空响应,我不知道为什么。

我希望任何人都可以帮助我,如果您需要有关我的代码的更多信息,请随时问我。

谢谢:)

在 HttpURLConnection 中有一个名为 EXCLUDE_HEADERS 的常量字符串数组,具有以下注释:

// the following http request headers should NOT have their values
// returned for security reasons.
private static final String[] EXCLUDE_HEADERS = {
        "Proxy-Authorization",
        "Authorization"
};

目的可能是不小心丢弃那些 headers,例如在记录请求时。

注意! 这并不意味着它们没有被设置,只是当您查询它们时它们没有被返回。要测试实际值,一个想法可能是使用 WireMock(或任何自定义服务器)之类的东西来检查实际发送的内容。