gpt4 book ai didi

java - 带有编码参数的 RestTemplate

转载 作者:太空宇宙 更新时间:2023-11-04 12:46:27 25 4
gpt4 key购买 nike

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

请求必须发送至:

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

我尝试了 RestTemplate(Spring):

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 参数似乎不起作用,因为结果不仅包括具有指定电子邮件地址的用户,还包括所有用户。 header 很好(否则我根本就没有用户)。

最佳答案

您可以在 restTemplate.exchange 的重载方法上添加请求参数的映射:

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

关于java - 带有编码参数的 RestTemplate,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36280025/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com