Как передать запросы на URL в шаблоне отдыха без URI
Я пытаюсь сделать вызов GET для URL, и мне нужно передать запросы, чтобы получить ответ, который я хочу. Я использую Spring Framework и шаблон Rest для звонков. Я знаю, что могу сделать это вручную:
Uritemplate(url+name={name}...
но это боль. Мне нужен более простой способ, и хэш-карта будет генерироваться динамически
Итак, как мне передать карту в URL без использования URI-кодировщика?
String url = "example.com/search
Map<String, String> params = new HashMap<String, String>();
params.put("name", "john");
params.put("location", "africa");
public static ResponseEntity<String> callGetService(String url, Map<String, String> param) {
RestTemplate rest = new RestTemplate();
rest.getMessageConverters().add(new MappingJackson2HttpMessageConverter());
HttpHeaders headers = new HttpHeaders();
headers.setContentType(MediaType.APPLICATION_JSON);
headers.setAccept(Arrays.asList(MediaType.APPLICATION_JSON));
HttpEntity<?> reqentity = new HttpEntity<Object>(headers);
ResponseEntity<String> resp = rest.exchange(url, HttpMethod.GET, reqentity, String.class);
System.out.println(resp);
return resp;
}
Таким образом, URL будет выглядеть следующим образом: example.com/search?name=john&location=africa
ответ: {имя: Джон Доу, любовь: футбол} --- тонны данных JSON
1 ответ
Ты можешь использовать UriComponentsBuilder
а также UriComponents
которые облегчают создание URI
String url = "http://example.com/search";
MultiValueMap<String, String> params = new LinkedMultiValueMap<String, String>();
params.add("name", "john");
params.add("location", "africa");
UriComponents uriComponents = UriComponentsBuilder.fromHttpUrl(url).queryParams(params).build();
System.out.println(uriComponents.toUri());
печать
http://example.com/search?name=john&location=africa
Есть и другие варианты, если вам нужно использовать переменные URI для сегментов пути.
Обратите внимание, что если вы отправляете HTTP-запрос, вам нужен действительный URL-адрес. Схема URL-адреса HTTP описана в спецификации HTTP здесь. UriComponentsBuilder
предоставляет методы для создания всех частей URL.