从 Spring Boot 中的 API 中获取特定的响应值

Get specific response value from the API in SpringBoot

我打了一个 post 电话,得到的回复如下:

现在我想获取访问令牌的值并进行一些逻辑处理。如何从响应中获取值?谁能帮忙。 API.

的服务代码
public String getToken(User user) throws JsonMappingException, JsonProcessingException {
        ObjectMapper mapper = new ObjectMapper();
        System.out.println(clientId+clientPass);
        String plainCreds = clientId+":"+clientPass;
        byte[] plainCredsBytes = plainCreds.getBytes();
        byte[] base64CredsBytes = Base64.getEncoder().encode(plainCredsBytes);
        String base64Creds = new String(base64CredsBytes);
        HttpHeaders headers = new HttpHeaders();
        headers.add("Authorization", "Basic " + base64Creds);
        HttpEntity<String> request=new HttpEntity<String>(headers);
        String uri = url+ user.getUser_id()
                + "&password=" + user.getPassword();
        RestTemplate restTemplate = new RestTemplate();
        
        ResponseEntity<String> result = restTemplate.exchange(uri, HttpMethod.POST, request, String.class) ;
        JsonNode newNode = mapper.readTree(result.getBody());
        ObjectNode node = ((ObjectNode) newNode).put("Authentication", "Successful");
        
        return mapper.writerWithDefaultPrettyPrinter().writeValueAsString(node);
    }

您可以编写 DTO 来响应:

public class ResponseSample {
   @JsonProperty("access_token")
   String accessToken;
   ....
}

(或反序列化到地图) 而不是调用 ResponseEntity<String> result = restTemplate.exchange(...) 你可以调用

ResponseEntity<ResponseSample> result = restTemplate.exchange(..., ResponseSample.class)

我想通了。 我用了

node.get("access_token")

成功了!