J'ai une méthode côté serveur qui me donne des informations sur un nom spécifique enregistré dans ma base de données. J'y accède depuis mon application Android.
La demande au serveur est faite normalement. Ce que j'essaie de faire est de passer un paramètre au serveur en fonction du nom que je veux obtenir
Voici ma méthode côté serveur:
@RequestMapping("/Android/played")
public ModelAndView getName(String name) {
System.out.println("Requested name: " + name);
........
}
Voici la demande Android à ce sujet:
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);
}
Du côté du serveur, je ne reçois que:
Requested name: null
Est-il possible d'envoyer des paramètres à mon serveur comme ceci?
Le modèle restant attend une variable "{nom}" à remplacer.
Ce que je pense que vous cherchez à faire est de créer une URL avec des paramètres de requête. Vous avez l'une des deux options suivantes:
L’option 1 est cependant beaucoup plus souple. L’option 2 est plus directe si vous avez juste besoin de le faire.
Exemple à la demande
// 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);
Changement
String url = BASE_URL + "/Android/played.json";
à
String url = BASE_URL + "/Android/played.json?name={name}";
parce que la carte contient des variables pour l'URL seulement!