android - 如何使用 RestTemplate 在响应正文(身份验证 Web 服务)中返回令牌?
问题描述
我使用 RestTemplate 调用身份验证的 Web 服务和 POST 用户名和密码,我需要作为回报从响应正文中获取令牌,但我找不到明确的方法来做到这一点..这是我的代码
HttpHeaders requestHeaders = new HttpHeaders();
requestHeaders.add("Content-Type","application/json");
requestHeaders.add("Accept", "application/json");
requestHeaders.add("Authorization", auth_token);
final String url = "http://192.168.1.3:18080/api/authenticate";
RestTemplate restTemplate=new RestTemplate();
restTemplate.getMessageConverters().add(new MappingJackson2HttpMessageConverter());
restTemplate.getMessageConverters().add(new StringHttpMessageConverter());
MultiValueMap<String, String> map = new LinkedMultiValueMap<String, String>();
map.add("password",password);
map.add("username",username);
HttpEntity<MultiValueMap<String, String>> entity= new HttpEntity<MultiValueMap<String, String>>(map, requestHeaders);
String response = restTemplate.postForObject(url,entity,String.class);
return response;
这是我需要从中获取令牌的响应正文:Web 服务响应正文
解决方案
您几乎就在那里,此时您的代码将整个 JSON 响应作为字符串获取:
return restTemplate.postForObject(url,entity,String.class);
// {"id_token": "blahblahblah"}
相反,您可以转换为 Map 并获取正确的值:
Map<String, Object> response3 = restTemplate.postForObject(url, entity, Map.class);
return response3.get("id_token")
// blahblahblah
或创建一个类:
public class AuthResponse {
@JsonProperty( "id_token" )
private String idToken;
public String getIdToken() {
return idToken;
}
public void setIdToken(String idToken) {
this.idToken = idToken;
}
}
并转换:
AuthResponse response4 = restTemplate.postForObject(url, entity, AuthResponse.class);
return response4.getIdToken();
// blahblahblah
推荐阅读
- jquery - How to add properties of objects returned in JSON into a template
- azure-pipelines - Azure DevOps Server 手动启动计划生成
- arrays - vb.net how to flatten 3 dimensional array into single dimension
- html - Fill remaining whitespace in line with dots (multiline text)
- r - Time data populating in r
- python - Could not get environment variables: {}
- php - 如何计算 30 天内的数据库行数?
- excel - Overriding a column in one excel file with data from a separate excel file
- mouseevent - Is it possible to know where the map will stop after a 'dragend' event fires?
- c# - 将相同大小的图像网格缝合在一起