繁体   English   中英

如何从 http 响应实体中获取数据?

[英]How to fetch data from http response entity?

我正在使用 SpringBoot 从我的客户端获取访问令牌。 我无法将访问令牌与 responseEntity 分开。 有没有办法单独获取 AccessToken 数据?

这是代码:

公共响应实体 generate_Access_token() {

    String url = "https://zoom.us/oauth/token";
    RestTemplate restTemplate = new RestTemplate();
    HttpHeaders headers = new HttpHeaders();
    final Gson gson = new Gson();
    headers.setContentType(MediaType.APPLICATION_FORM_URLENCODED);

    MultiValueMap<String, String> map= new LinkedMultiValueMap<String, String>();
    map.add("grant_type", "account_credentials");
    map.add("client_id", "XXX");
    map.add("client_secret", "XXX");
    map.add("account_id", "XXX");

    

    HttpEntity<MultiValueMap<String, String>> request = new HttpEntity<MultiValueMap<String, String>>(map, headers);

    ResponseEntity<String> response = restTemplate.postForEntity( url, request , String.class );
    
    //ResponseEntity<String> response_data=new ResponseEntity<String>(response.toString(), HttpStatus.CREATED);     
    ResponseEntity<AccessTokenResponse> response_data = restTemplate.postForEntity( url, request , AccessTokenResponse.class );

    
    return response_data.getAccessToken();
    

    
    
    
    
}
class AccessTokenResponse{
      @JsonProperty("access_token")
      String accessToken;
      //other props you are interested in
      //+ getters/setters

    public String getAccessToken() {
        return accessToken;
    }

    public void setAccessToken(String accessToken) {
        this.accessToken = accessToken;
    }

} }

响应:

{
    "access_token": "eyJhbGciOiJIUzUxMiIsInYiOiIyLjAiLCJraWQiOiJlNDI1NDFkYi0zMTllLTRiMGYtOWIwMC04YTVlZmY4NTI2NTAifQ.eyJ2ZXIiOjcsImF1aWQiOiJjNWFjZThhNGRiNDY0NTJhM2YxNGNkZjcyZjY1MjU2NSIsImNvZGUiOiIxYldicXNVNVR3V1hDUEY5M2ZTbjdBR21xT1NKOXBUS0kiLCJpc3MiOiJ6bTpjaWQ6NjFtN2ppSXFUM2VMWDRuS0xZVUdGZyIsImdubyI6MCwidHlwZSI6MywiYXVkIjoiaHR0cHM6Ly9vYXV0aC56b29tLnVzIiwidWlkIjoianYwWWZyUDlRLWFLTlctTFVlSXRDZyIsIm5iZiI6MTY1NjMxNzM2MiwiZXhwIjoxNjU2MzIwOTYyLCJpYXQiOjE2NTYzMTczNjIsImFpZCI6IkJ4MnVOWHpHUWwtSHVDN3BITWF2NWciLCJqdGkiOiJlYTYwMDkwYS0wMWY1LTQwODctODgxMi0wNmQ2Mzk1NTI2ZGUifQ.nKiYXxCDbhQRsyR2pTu0nwegQKBHsSR9JT7CBnad5pPfBi4pVBISjGp6icRv2Nyv_L7lNzVBK8clW7Z5zM9TUg",
    "token_type": "bearer",
    "expires_in": 3599,
    "scope": "meeting:read:admin user:master user:read:admin user:write:admin"
}

让你的生活更轻松,而不是更难——使用普通的 DTO

class AccessTokenResponse{
  @JsonProperty("access_token");
  String accessToken
  //other props you are interested in
  //+ getters/setters
}

接着

   AccessTokenResponse response = restTemplate.postForObject( url, request , AccessTokenResponse.class );
    
   response.getAccessToken(); //here you have it

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM