Ich muss eine HTTP-Anfrage an einen Authentifizierungsanbieter (Auth0) senden. Ich möchte einen bestimmten Benutzer über seine E-Mail-Adresse erreichen.RestTemplate mit codierten Parametern
Der Antrag muss gehen:
curl -H "Authorization: Bearer ..." https://.../users?q=email%3A%22mymail%40abc.de%22&search_engine=v2
ich mein Glück versucht, mit RestTemplate (Frühling):
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;
}
wie der Wert der muss q
Parameter Sieht codiert werden (sie nennen es "Lucene Abfragesyntax"). Ich habe verschiedene Varianten ausprobiert. Ich habe sie sogar "codiert" codiert.
Es scheint jedoch, dass der q
Parameter nicht funktioniert, da das Ergebnis nicht nur den Benutzer mit der angegebenen E-Mail-Adresse, sondern alle Benutzer enthält. Header sind in Ordnung (sonst würde ich überhaupt keinen Benutzer bekommen).
Sie vermissen etwas? Methode kann nicht aufgelöst werden. Sieht so aus, als könnte ich das mit diesen Parametern nicht machen. – mosquito87
Nein, ich benutze 'org.springframework.http.HttpEntity',' org.springframework.web.client.RestTemplate; 'und ich kann die Methode –
Working beim Konvertieren der URI toString. Allerdings bekomme ich das gleiche Ergebnis (alle Benutzer statt der angegebenen). – mosquito87