有没有办法从 Java 响应正文中访问各个标头参数?

问题描述 投票:0回答:1

我是使用 API 进行编码的新手,在其他方面也没有太多经验,所以如果我有任何术语错误,我深表歉意。

我想知道是否有一种方法可以仅访问标头的值,而不必将整个响应解析为字符串?如果 java.net 包中已经存在具有该标题的标头,是否有一种方法可以传递标头并接收与其关联的值?

目标是将访问令牌保存在字符串变量中,以便可以将其用于需要它的其他 API 调用。

这是我的代码;

import java.net.URI;
import java.net.http.HttpClient;
import java.net.http.HttpRequest;
import java.net.http.HttpResponse;

public class App {
    public static void main(String[] args) throws Exception {
    HttpRequest request = HttpRequest.newBuilder()
        .uri(URI.create("https://accounts.spotify.com/api/token"))
        .header("Content-Type", "application/x-www-form-urlencoded")
        .method("POST", HttpRequest.BodyPublishers.ofString("grant_type=client_credentials&client_id=[MY_ID]&client_secret=[MY_SECRET]"))
        .build();
    HttpResponse<String> response = HttpClient.newHttpClient().send(request, HttpResponse.BodyHandlers.ofString());
    System.out.println(response.body());
}

我明白了;

{"access_token":"[ACCESS_TOKEN]","token_type":"Bearer","expires_in":3600}

我只想将 [ACCESS_TOKEN] 保存到字符串变量中。谢谢!

java spotify
1个回答
0
投票

该响应不是标题。标题是另一回事。在这里,spotify API 服务器无疑会使用像

Content-Type
这样的标头进行响应(其值将是
application/json; charset=UTF-8
)。

你所看到的身体。如果调用

.body()
返回与 body 相反的东西,那就有点愚蠢了。

该正文采用名为 JSON 的格式。您需要一个 JSON 解析器来解析它。我建议Jackson JSON

© www.soinside.com 2019 - 2024. All rights reserved.