【发布时间】:2016-07-16 18:08:55
【问题描述】:
我需要向身份验证提供程序 (Auth0) 发送 HTTP 请求。我想通过其电子邮件地址获取一位特定用户。
请求必须去:
curl -H "Authorization: Bearer ..." https://.../users?q=email%3A%22mymail%40abc.de%22&search_engine=v2
我用 RestTemplate(春季)试试运气:
public void doSomething() {
...
Map<String, String> requestMap = new HashMap<>();
requestMap.put("q", "email%3A%22mymail%40abc.de%22");
requestMap.put("search_engine", "v2");
RestTemplate restTemplate = getRestTemplateForRequestMap();
HttpHeaders headers = getHeaders();
HttpEntity<Map<String, String>> request = new HttpEntity<>(requestMap, headers);
ResponseEntity<UserInfo[]> response = restTemplate.exchange(URI.create(baseApiUrl + "users"), HttpMethod.GET, request, UserInfo[].class);
...
}
private RestTemplate getRestTemplateForRequestMap() {
RestTemplate restTemplate = new RestTemplate();
List messageConverters = new ArrayList<>();
messageConverters.add(new MappingJackson2HttpMessageConverter());
restTemplate.setMessageConverters(messageConverters);
return restTemplate;
}
看起来q 参数的值需要编码(他们称之为“Lucene 查询语法”)。我尝试了不同的变化。我什至把它们“硬编码”了。
但是,q 参数似乎不起作用,因为结果不仅包括具有指定电子邮件地址的用户,还包括所有用户。
标头很好(否则我将根本没有用户)。
【问题讨论】:
标签: java spring resttemplate spring-rest auth0