从 SpringBoot 中的 API 获取特定的响应值
Posted
技术标签:
【中文标题】从 SpringBoot 中的 API 获取特定的响应值【英文标题】:Get specific response value from the API in SpringBoot 【发布时间】:2021-04-14 05:21:39 【问题描述】:我正在拨打一个电话并收到如下回复:
现在我想获取访问令牌的值并执行一些逻辑。如何从响应中获取价值?任何人都可以请帮忙。 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);
【问题讨论】:
也许这很有用:appsdeveloperblog.com/… 【参考方案1】:我能够弄清楚。 我用过
node.get("access_token")
它成功了!
【讨论】:
【参考方案2】:你可以写 DTO 来响应:
public class ResponseSample
@JsonProperty("access_token")
String accessToken;
....
(或反序列化为 Map)
而是打电话给ResponseEntity<String> result = restTemplate.exchange(...)
你可以打电话
ResponseEntity<ResponseSample> result = restTemplate.exchange(..., ResponseSample.class)
【讨论】:
我使用了 node.get("access_token") 并且它有效。无论如何,感谢您的宝贵时间!以上是关于从 SpringBoot 中的 API 获取特定的响应值的主要内容,如果未能解决你的问题,请参考以下文章
我怎样才能通过在请求中传递特定参数来获取它们? SpringBoot API
从 ASP.NET CORE Web Api 获取 React 中的特定响应标头(例如,Content-Disposition)