Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/318.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/spring/13.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 带编码参数的RestTemplate_Java_Spring_Resttemplate_Spring Rest_Auth0 - Fatal编程技术网

Java 带编码参数的RestTemplate

Java 带编码参数的RestTemplate,java,spring,resttemplate,spring-rest,auth0,Java,Spring,Resttemplate,Spring Rest,Auth0,我需要向身份验证提供商(Auth0)发送HTTP请求。我想通过电子邮件地址获得一个特定用户 请求必须转到: curl -H "Authorization: Bearer ..." https://.../users?q=email%3A%22mymail%40abc.de%22&search_engine=v2 我尝试了RestTemplate(Spring)的运气: public void doSomething(){ ... Map requestMap=newhashmap();

我需要向身份验证提供商(Auth0)发送HTTP请求。我想通过电子邮件地址获得一个特定用户

请求必须转到:

curl -H "Authorization: Bearer ..." https://.../users?q=email%3A%22mymail%40abc.de%22&search_engine=v2
我尝试了RestTemplate(Spring)的运气:

public void doSomething(){
...
Map requestMap=newhashmap();
requestMap.put(“q”,“电子邮件%3A%22mymail%40abc.de%22”);
requestMap.put(“搜索引擎”、“v2”);
RestTemplate RestTemplate=getRestTemplateForRequestMap();
HttpHeaders=getHeaders();
HttpEntity请求=新的HttpEntity(请求映射,标题);
ResponseEntity response=restemplate.exchange(URI.create(baseapirl+“users”)、HttpMethod.GET、request、UserInfo[].class);
...
}
私有RestTemplate getRestTemplateForRequestMap(){
RestTemplate RestTemplate=新RestTemplate();
List messageConverters=new ArrayList();
添加(新映射Jackson2HttpMessageConverter());
restemplate.setMessageConverters(messageConverters);
返回REST模板;
}
看起来需要对
q
参数的值进行编码(他们称之为“Lucene查询语法”)。我尝试了不同的变化。我甚至把它们“硬编码”编码

但是,
q
参数似乎不起作用,因为结果不仅包括具有指定电子邮件地址的用户,还包括所有用户。
标题很好(否则我将无法获得任何用户)。

您可以在
restemplate的重载方法中添加请求参数的映射。exchange

    ResponseEntity<UserInfo[]> response = restTemplate.exchange(URI.create(baseApiUrl + "users"), HttpMethod.GET,
 request, UserInfo[].class,requestMap);
ResponseEntity response=restemplate.exchange(URI.create(baseapirl+“users”)、HttpMethod.GET、,
请求,UserInfo[].class,requestMap);

您可以在
restemplate的重载方法中添加请求参数的映射。exchange

    ResponseEntity<UserInfo[]> response = restTemplate.exchange(URI.create(baseApiUrl + "users"), HttpMethod.GET,
 request, UserInfo[].class,requestMap);
ResponseEntity response=restemplate.exchange(URI.create(baseapirl+“users”)、HttpMethod.GET、,
请求,UserInfo[].class,requestMap);
对我有用:

 UriComponentsBuilder builder;
        try {            
String emailEncoded = URLEncoder.encode("email:" + email, "UTF-8");
                builder = UriComponentsBuilder.fromHttpUrl(url)
                        .queryParam("include_fields", "true")
                        .queryParam("search_engine", "v3")
                        .queryParam("q", emailEncoded);
            } catch (UnsupportedEncodingException e) {
                .....
            }

            HttpEntity<?> httpEntity = HttpUtility.getHttpEntity(jwtToken);
            ResponseEntity<String> response = restTemplate.exchange(builder.build().toUriString(), HttpMethod.GET, httpEntity, String.class);
uricomponentsbuilderbuilder;
试试{
字符串emailEncoded=urlcoder.encode(“email:+email,UTF-8”);
builder=UriComponentsBuilder.fromHttpUrl(url)
.queryParam(“包括字段”、“真”)
.queryParam(“搜索引擎”、“v3”)
.queryParam(“q”,电子邮件编码);
}捕获(不支持的编码异常e){
.....
}
HttpEntity-HttpEntity=HttpUtility.getHttpEntity(jwtToken);
ResponseEntity response=restemplate.exchange(builder.build().toUriString(),HttpMethod.GET,httpEntity,String.class);
对我有用:

 UriComponentsBuilder builder;
        try {            
String emailEncoded = URLEncoder.encode("email:" + email, "UTF-8");
                builder = UriComponentsBuilder.fromHttpUrl(url)
                        .queryParam("include_fields", "true")
                        .queryParam("search_engine", "v3")
                        .queryParam("q", emailEncoded);
            } catch (UnsupportedEncodingException e) {
                .....
            }

            HttpEntity<?> httpEntity = HttpUtility.getHttpEntity(jwtToken);
            ResponseEntity<String> response = restTemplate.exchange(builder.build().toUriString(), HttpMethod.GET, httpEntity, String.class);
uricomponentsbuilderbuilder;
试试{
字符串emailEncoded=urlcoder.encode(“email:+email,UTF-8”);
builder=UriComponentsBuilder.fromHttpUrl(url)
.queryParam(“包括字段”、“真”)
.queryParam(“搜索引擎”、“v3”)
.queryParam(“q”,电子邮件编码);
}捕获(不支持的编码异常e){
.....
}
HttpEntity-HttpEntity=HttpUtility.getHttpEntity(jwtToken);
ResponseEntity response=restemplate.exchange(builder.build().toUriString(),HttpMethod.GET,httpEntity,String.class);

您是否遗漏了什么?方法无法解析。看起来我无法使用该参数。不,我使用的是
org.springframework.http.HttpEntity
org.springframework.web.client.restemplate并且我可以在将URI转换为字符串时解析methodWorking。但是,我得到了相同的结果(所有用户,而不是指定的用户)。您确定这是正确的邮件地址吗
电子邮件%3A%22mymail%40abc.de%22
?是的,我从这些参数工作的页面上的“交互式API”复制了它(顺便说一句:它是匿名的)。您缺少什么吗?方法无法解析。看起来我无法使用该参数。不,我使用的是
org.springframework.http.HttpEntity
org.springframework.web.client.restemplate并且我可以在将URI转换为字符串时解析methodWorking。但是,我得到了相同的结果(所有用户,而不是指定的用户)。您确定这是正确的邮件地址吗
电子邮件%3A%22mymail%40abc.de%22
?是的,我从这些参数工作的页面上的“交互式API”复制了它(顺便说一句:它是匿名的)。