Quiero convertir el siguiente fragmento de rizo (en funcionamiento) en una llamada RestTemplate:
curl -i -X POST -d "[email protected]" https://app.example.com/hr/email¿Cómo paso el parámetro de correo electrónico correctamente? El siguiente código da como resultado una respuesta 404 No encontrado:
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 );Traté de formular la llamada correcta en PostMan, y puedo hacer que funcione correctamente especificando el parámetro de correo electrónico como un parámetro de "datos de formulario" en el cuerpo. ¿Cuál es la forma correcta de lograr esta funcionalidad en un RestTemplate?
                    
                        java
                                spring
                                rest
                                resttemplate
                                
                    
                    
                        sim
fuente
                
                fuente

Respuestas:
El método POST debe enviarse junto con el objeto de solicitud HTTP. Y la solicitud puede contener un encabezado HTTP o un cuerpo HTTP o ambos.
Por lo tanto, creemos una entidad HTTP y enviemos los encabezados y el parámetro en el cuerpo.
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 ...-
fuente
ResponseEntity<String> response = new RestTemplate().postForEntity(url, request, String.class);Me estoy poniendoorg.springframework.http.converter.HttpMessageNotWritableException: Could not write content: No serializer found for class java.util.Collections$3argshay una matriz de Stringcurl -X POST --data '{"file": "/xyz.jar", "className": "my.class.name", "args": ["100"]}' -H "Content-Type: application/json" localhost:1234/batchesCómo POSTAR datos mixtos: Archivo, Cadena [], Cadena en una solicitud.
Puede usar solo lo que necesita.
La solicitud POST tendrá Archivo en su cuerpo y la siguiente estructura:
fuente
Aquí está el programa completo para hacer una llamada POST rest utilizando Spring's RestTemplate.
fuente
ResponseEntity<?> response = new RestTemplate().postForEntity(url, request, String.class);. Estoy recibiendoorg.springframework.http.converter.HttpMessageNotWritableException: Could not write content: No serializer found for class java.util.Collections$3application/jsontipo de contenido por elapplication/x-www-form-urlencodedobtendrá org.springframework.web.client.RestClientException: No HttpMessageConverter para java.util.HashMap y tipo de contenido "application / x-www-form-urlencoded" - consulte stackoverflow.com/q / 31342841/355438Su url String necesita marcadores variables para el mapa que pasa al trabajo, como:
O podría codificar explícitamente los parámetros de consulta en la Cadena para comenzar y no tener que pasar el mapa, como:
Ver también https://stackoverflow.com/a/47045624/1357094
fuente