232 votes

Comment faire pour publier des données de formulaire avec RestTemplate printemps ?

Je veux convertir un appel de RestTemplate de l’extrait suivant de curl (travail) :

Comment passer le paramètre email correctement ? Le code suivant génère une réponse 404 introuvable :

J’ai essayé de formuler l’appel correct au postier, et je peux faire fonctionner correctement en spécifiant le paramètre email comme paramètre « form-data » dans le corps. Quelle est la bonne façon d’obtenir cette fonctionnalité dans un RestTemplate ?

488voto

Tharsan Sivakumar Points 2910

La méthode POST doit être envoyé en même temps que la requête HTTP objet. Et la demande peut contenir un en-tête HTTP ou HTTP corps ou les deux.

Donc nous allons créer un HTTP entité et envoyer les en-têtes et les paramètres dans le corps.

HttpHeaders headers = new HttpHeaders();
headers.setContentType(MediaType.APPLICATION_FORM_URLENCODED);

MultiValueMap<String, String> map= new LinkedMultiValueMap<String, String>();
map.add("email", "first.last@example.com");

HttpEntity<MultiValueMap<String, String>> request = new HttpEntity<MultiValueMap<String, String>>(map, headers);

ResponseEntity<String> response = restTemplate.postForEntity( url, request , String.class );

http://docs.spring.io/spring/docs/current/javadoc-api/org/springframework/web/client/RestTemplate.html#postForObject-java.lang.String-java.lang.Object-java.lang.Class-java.lang.Object...-

37voto

Iuliia Points 198

Comment faire pour publier des données mixtes : fichier, String [], String en une requête.

Vous pouvez utiliser uniquement ce que vous avez besoin.

La requête POST aura fichier dans son corps et de la structure suivante :

13voto

Piyush Mittal Points 1291

Voici le programme complet pour faire un repos POST appeler à l’aide RestTemplate de printemps.

-3voto

cellepo Points 124

Url de votre chaîne a besoin de marqueurs variables pour la carte, vous passez au travail, comme :

Ou vous pourriez coder explicitement les paramètres de requête dans la chaîne dans un premier temps et je dois pas passer la carte du tout, comme :

Voir aussi https://stackoverflow.com/a/47045624/1357094

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X