Felipe Mosso Felipe Mosso - 1 year ago 280
Android Question

How to send a getForObject request with parameters Spring MVC

I have a method on the Server side which gives me information about an specific name registered in my database. I'm accessing it from my Android application.

The request to Server is done normally. What I'm trying to do is to pass parameter to the server depending on the name I want to get.

Here's my Server side method:

public ModelAndView getName(String name) {
System.out.println("Requested name: " + name);


Here's the Android request to it:

private Name getName() {
RestTemplate restTemplate = new RestTemplate();
// Add the String message converter
new MappingJacksonHttpMessageConverter());
new HttpComponentsClientHttpRequestFactory());

String url = BASE_URL + "/android/played.json";
String nome = "Testing";

Map<String, String> params = new HashMap<String, String>();
params.put("name", nome);

return restTemplate.getForObject(url, Name.class, params);

In the server side, I'm only getting:

Requested name: null

Is it possible to send parameters to my Server like this?

Answer Source

The rest template is expecting a variable "{name}" to be in there for it to replace.

What I think you're looking to do is build a URL with query parameters you have one of two options:

  1. Use a UriComponentsBuilder and add the parameters by that
  2. String url = BASE_URL + "/android/played.json?name={name}"

Option 1 is much more flexible though. Option 2 is more direct if you just need to get this done.

Example as requested

// Assuming BASE_URL is just a host url like http://www.somehost.com/
URI targetUrl= UriComponentsBuilder.fromUriString(BASE_URL)
    .queryParam("name", nome)

return restTemplate.getForObject(targetUrl, Name.class);
Recommended from our users: Dynamic Network Monitoring from WhatsUp Gold from IPSwitch. Free Download