comment passer des requêtes vers une url dans le reste modèle sans uri
Je suis en train de faire un appel à une url et j'ai besoin de passer dans les requêtes pour obtenir la réponse que je veux.
Je suis en utilisant le framework spring et de Repos à l'aide de modèle pour effectuer les appels.
Je sais que je peux le faire manuellement de cette façon:
Uritemplate(url+name={name}...
mais c'est une douleur. J'ai besoin d'un moyen plus facile et le hachage de la carte sera généré dynamiquement
Alors, comment puis-je passer d'une carte à une url sans l'aide d'uri codeur?
String url = "example.com/search
Map<String, String> params = new HashMap<String, String>();
params.put("name", "john");
params.put("location", "africa");
public static ResponseEntity<String> callGetService(String url, Map<String, String> param) {
RestTemplate rest = new RestTemplate();
rest.getMessageConverters().add(new MappingJackson2HttpMessageConverter());
HttpHeaders headers = new HttpHeaders();
headers.setContentType(MediaType.APPLICATION_JSON);
headers.setAccept(Arrays.asList(MediaType.APPLICATION_JSON));
HttpEntity<?> reqentity = new HttpEntity<Object>(headers);
ResponseEntity<String> resp = rest.exchange(url, HttpMethod.GET, reqentity, String.class);
System.out.println(resp);
return resp;
}
Donc l'url va finir comme cela example.com/search?name=john&location=afrique
réponse: {nom:john doe, l'amour: football} --- des tonnes de données json
OriginalL'auteur | 2014-02-02
Vous devez vous connecter pour publier un commentaire.
Vous pouvez utiliser
UriComponentsBuilder
etUriComponents
qui facilitent la prise de Uriimprime
Il y a d'autres options si vous avez besoin d'utiliser des variables URI pour les segments de tracé.
Noter que si vous envoyez une requête HTTP, vous avez besoin d'une URL valide. L'URL HTTP schéma est expliqué dans la spécification HTTP, ici.
Le
UriComponentsBuilder
fournit des méthodes pour construire toutes les parties de l'URL.Dommage que la méthode queryParams n'existe pas encore au printemps-web-3.2.4
OriginalL'auteur Sotirios Delimanolis