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$3
args
hay una matriz de Stringcurl -X POST --data '{"file": "/xyz.jar", "className": "my.class.name", "args": ["100"]}' -H "Content-Type: application/json" localhost:1234/batches
Có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$3
application/json
tipo de contenido por elapplication/x-www-form-urlencoded
obtendrá 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