Reputation: 969
I try to access a rest endpoint by using springs RestTemplate.getForObject() but my uri variables are not expanded, and attached as parameters to the url. This is what I got so far:
Map<String, String> uriParams = new HashMap<String, String>();
uriParams.put("method", "login");
uriParams.put("input_type", DATA_TYPE);
uriParams.put("response_type", DATA_TYPE);
uriParams.put("rest_data", rest_data.toString());
String responseString = template.getForObject(endpointUrl, String.class, uriParams);
the value of the endpointUrl Variable is http://127.0.0.1/service/v4_1/rest.php
and it's exactely what it's called but I'd expect http://127.0.0.1/service/v4_1/rest.php?method=login&input_type...
to be called.
Any hints are appreciated.
I'm using Spring 3.1.4.RELEASE
Regards.
Upvotes: 42
Views: 62504
Reputation: 1782
The currently-marked answer from user180100
is technically correct but not very explicit. Here is a more explicit answer, to help those coming along behind me, because the answer didn't quite make sense to me at first.
String url = "http://www.sample.com?foo={fooValue}";
Map<String, String> uriVariables = new HashMap<>();
uriVariables.put("fooValue", "2");
// "http://www.sample.com?foo=2"
restTemplate.getForObject(url, Object.class, uriVariables);
Upvotes: 45
Reputation:
There is no append some query string logic in RestTemplate
it basically replace variable like {foo}
by their value:
http://www.sample.com?foo={foo}
becomes:
http://www.sample.com?foo=2
if foo
is 2.
Upvotes: 56