Je souhaite convertir l'extrait de code curl suivant (fonctionnel) en un appel RestTemplate:
curl -i -X POST -d "[email protected]" https://app.example.com/hr/email
Comment transmettre correctement le paramètre email? Le code suivant entraîne une réponse 404 non trouvée:
String url = "https://app.example.com/hr/email";
Map<String, String> params = new HashMap<String, String>();
params.put("email", "[email protected]");
RestTemplate restTemplate = new RestTemplate();
ResponseEntity<String> response = restTemplate.postForEntity( url, params, String.class );
J'ai essayé de formuler l'appel correct dans PostMan, et je peux le 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?
Réponses:
La méthode POST doit être envoyée avec l'objet de requête HTTP. Et la demande peut contenir un en-tête HTTP ou un corps HTTP ou les deux.
Créons donc une entité HTTP et envoyons les en-têtes et les paramètres dans le corps.
http://docs.spring.io/spring/docs/current/javadoc-api/org/springframework/web/client/RestTemplate.html#postForObject-java.lang.String-java.lang.Object-java.lang. Classe-java.lang.Object ...-
la source
ResponseEntity<String> response = new RestTemplate().postForEntity(url, request, String.class);
Je reçoisorg.springframework.http.converter.HttpMessageNotWritableException: Could not write content: No serializer found for class java.util.Collections$3
args
sont un tableau de Stringcurl -X POST --data '{"file": "/xyz.jar", "className": "my.class.name", "args": ["100"]}' -H "Content-Type: application/json" localhost:1234/batches
Comment POSTER des données mixtes: fichier, chaîne [], chaîne en une seule requête.
Vous ne pouvez utiliser que ce dont vous avez besoin.
La requête POST aura File dans son corps et sa structure suivante:
la source
voici le programme complet pour effectuer un appel de repos POST en utilisant RestTemplate de spring.
la source
ResponseEntity<?> response = new RestTemplate().postForEntity(url, request, String.class);
. Je reçoisorg.springframework.http.converter.HttpMessageNotWritableException: Could not write content: No serializer found for class java.util.Collections$3
application/json
type de contenu par le,application/x-www-form-urlencoded
vous obtiendrez org.springframework.web.client.RestClientException: Non HttpMessageConverter pour java.util.HashMap et le type de contenu "application / x-www-form-urlencoded" - voir stackoverflow.com/q / 31342841/355438Votre chaîne d'URL a besoin de marqueurs variables pour la carte que vous transmettez au travail, comme:
Ou vous pouvez coder explicitement les paramètres de requête dans la chaîne pour commencer et ne pas avoir à passer du tout la carte, comme:
Voir également https://stackoverflow.com/a/47045624/1357094
la source