Question

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.

Was it helpful?

Solution

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.

OTHER TIPS

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);
Licensed under: CC-BY-SA with attribution
Not affiliated with StackOverflow
scroll top