RestTemplate request with braces ("{", "}")
resttemplate
Solution
Below code encrypts the uri using `UriComponentsBuilder`, adds query params using `RestTemplate` and also sets `HttpHeaders` if any.
public HttpEntity<String> getEntityByUri() {
String req = "https://api.vk.com/method/execute";
UriComponentsBuilder builder = UriComponentsBuilder.fromHttpUrl(req)
.queryParam("code",
"return[API.users.search({"count":1})]");
HttpHeaders headers = new HttpHeaders();
headers.setAccept(Arrays.asList(MediaType.ALL));
HttpEntity<String> httpEntity = new HttpEntity<String>(headers);
return new RestTemplate().exchange(builder.build().encode().toUri(), HttpMethod.GET, httpEntity, String.class);
}
Hope this helps and good luck!
Problem
I want to send request through RestTemplate. But my url has braces ('{', '}'), and therefore I have exception: "Not enough variable values available to expand ...". I try do it through uri ``` UriComponentsBuilder builder = UriComponentsBuilder.fromPath(url); UriComponents uriComponents = builder.build(); URI uri = uriComponents.toUri(); ``` But I got new exception:"protocol = https host = null". How I can send request with my URL? In URL must be braces. My code: ``` String url = "https://api.vk.com/method/execute?code=return[API.users.search({"count":1})];&access_token... String result = restTemplate.getForObject(url, String.class); ```