我是使用 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] 保存到字符串变量中。谢谢!
该响应不是标题。标题是另一回事。在这里,spotify API 服务器无疑会使用像
Content-Type
这样的标头进行响应(其值将是 application/json; charset=UTF-8
)。
你所看到的是身体。如果调用
.body()
返回与 body 相反的东西,那就有点愚蠢了。
该正文采用名为 JSON 的格式。您需要一个 JSON 解析器来解析它。我建议Jackson JSON。