2016-03-29 2 views
0

認証プロバイダ(Auth0)にHTTPリクエストを送信する必要があります。メールアドレスで特定のユーザーを1つ選びたい符号化パラメータを持つRestTemplate

要求はに行かなければならない:私はRestTemplate(春)と私の運を試してみました

curl -H "Authorization: Bearer ..." https://.../users?q=email%3A%22mymail%40abc.de%22&search_engine=v2 

qパラメータの値をエンコードする必要のよう

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; 
} 

が見える(彼らが呼びますそれは "Luceneクエリ構文")。私はさまざまなバリエーションを試しました。私はそれらを "ハードコーディング"してもよい。

結果は、指定された電子メールアドレスを持つユーザーが、すべてのユーザーだけでなく、としてqパラメータが動作していないようにしかし、それはそうです。 ヘッダーは問題ありません(そうでないと、ユーザーがまったく見つかりません)。

答えて

0

あなたはrestTemplate.exchangeのオーバーロードされたメソッドでリクエストパラメータのマップを上に追加することができます

ResponseEntity<UserInfo[]> response = restTemplate.exchange(URI.create(baseApiUrl + "users"), HttpMethod.GET, 
request, UserInfo[].class,requestMap); 
+0

あなたは何かが欠けていますか?メソッドを解決することはできません。私はそのパラメータではできないように見えます。 – mosquito87

+0

いいえ、私は 'org.springframework.http.HttpEntity'、' org.springframework.web.client.RestTemplateを使用しています; 'とURIのtoStringを変換するとき、私はこの方法 –

+0

作業を解決することができます。しかし、私は同じ結果を得ました(指定されたものの代わりにすべてのユーザー)。 – mosquito87

関連する問題