从 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")
成功了!
我打了一个 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")
成功了!