Как отправить запрос getForObject с параметрами Spring MVC

У меня есть метод на стороне сервера, который дает мне информацию о конкретном имени, зарегистрированном в моей базе данных. Я получаю доступ к нему из своего приложения для Android.

Запрос на сервер выполняется нормально. Я пытаюсь передать параметр на сервер в зависимости от имени, которое я хочу получить.

Вот мой метод на стороне сервера:

@RequestMapping("/android/played") public ModelAndView getName(String name) { System.out.println("Requested name: " + name); ........ } 

Вот запрос Android на него:

 private Name getName() { RestTemplate restTemplate = new RestTemplate(); // Add the String message converter restTemplate.getMessageConverters().add( new MappingJacksonHttpMessageConverter()); restTemplate.setRequestFactory( 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); } 

На стороне сервера я получаю только:

 Requested name: null 

Возможно ли отправить параметры на мой сервер следующим образом?

Solutions Collecting From Web of "Как отправить запрос getForObject с параметрами Spring MVC"

Шаблон останова ожидает, что переменная «{name}» будет там, где она будет заменена.

Я думаю, что вы хотите создать URL-адрес с параметрами запроса, у вас есть один из двух вариантов:

  1. Используйте UriComponentsBuilder и добавьте параметры этим
  2. String url = BASE_URL + "/android/played.json?name={name}"

Вариант 1 намного более гибкий. Вариант 2 более прямой, если вам просто нужно это сделать.

Пример по запросу

 // Assuming BASE_URL is just a host url like http://www.somehost.com/ URI targetUrl= UriComponentsBuilder.fromUriString(BASE_URL) // Build the base link .path("/android/played.json") // Add path .queryParam("name", nome) // Add one or more query params .build() // Build the URL .encode() // Encode any URI items that need to be encoded .toUri(); // Convert to URI return restTemplate.getForObject(targetUrl, Name.class);