J'essaie d'accéder à un noeud final de repos à l'aide de springs RestTemplate.getForObject (), mais mes variables uri ne sont pas développées et attachées en tant que paramètres à l'URL. C'est ce que j'ai eu jusqu'à présent:
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);
la valeur de la variable endpointUrl est http://127.0.0.1/service/v4_1/rest.php
et son nom est exact, mais je m'attendrais à ce que http://127.0.0.1/service/v4_1/rest.php?method=login&input_type...
soit appelé. Tous les indices sont appréciés.
J'utilise Spring 3.1.4.LELEASE
Cordialement.
Il n’existe pas de logique de chaîne de requête dans RestTemplate
elle remplace la variable telle que {foo}
par leur valeur:
http://www.sample.com?foo={foo}
devient:
http://www.sample.com?foo=2
si foo
est 2.
La réponse actuellement marquée de l'utilisateur 18080 est techniquement correcte mais pas très explicite. Voici une réponse plus explicite, pour aider ceux qui viennent derrière moi, car lorsque j'ai lu la réponse pour la première fois à la réponse de zhe, cela n'avait aucun sens pour moi.
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);
La réponse acceptée de RC est correcte à propos de la mappe des paramètres nécessitant des marqueurs de variable dans l'URL. foo "dans votre carte params).
Il est également techniquement possible de coder explicitement les paramètres dans la chaîne d'URL elle-même, pour commencer comme ceci:
endpointUrl = endpointUrl + "?method=login&input_type=" + DATA_TYPE + "&rest_data=" + rest_data.toString();