HTTP POST using JSON in Spring Rest
34,492
try to remove model
from the code, as i can see in your curl request you didn't use model attribute and everything works. try this:
public static void main(String[] args) {
final String uri = "url";
RestTemplate restTemplate = new RestTemplate();
// Add the Jackson message converter
restTemplate.getMessageConverters().add(new MappingJackson2HttpMessageConverter());
// create request body
String input = "{\"name\":\"name\",\"email\":\"[email protected]\"}";
// set headers
HttpHeaders headers = new HttpHeaders();
headers.setContentType(MediaType.APPLICATION_JSON);
headers.set("Authorization", "Basic " + "xxxxxxxxxxxx");
HttpEntity<String> entity = new HttpEntity<String>(input, headers);
// send request and parse result
ResponseEntity<String> response = restTemplate
.exchange(uri, HttpMethod.POST, entity, String.class);
System.out.println(response);
}
Author by
youssef Liouene
Updated on December 19, 2020Comments
-
youssef Liouene over 3 years
I would like to make a simple HTTP POST using Spring RestTemplate. the Wesb service accept JSON in parameter for example:
{"name":"mame","email":"[email protected]"}
public static void main(String[] args) { final String uri = "url"; RestTemplate restTemplate = new RestTemplate(); // Add the Jackson message converter restTemplate.getMessageConverters().add(new MappingJackson2HttpMessageConverter()); // create request body String input = "{ \"name\": \"name\", \"email\": \"[email protected]\" }"; JsonObject request = new JsonObject(); request.addProperty("model", input); // set headers HttpHeaders headers = new HttpHeaders(); headers.setContentType(MediaType.APPLICATION_JSON); headers.set("Authorization", "Basic " + "xxxxxxxxxxxx"); HttpEntity<String> entity = new HttpEntity<String>(request.toString(), headers); // send request and parse result ResponseEntity<String> response = restTemplate .exchange(uri, HttpMethod.POST, entity, String.class); System.out.println(response); }
When I test this code I got this error:
Exception in thread "main" org.springframework.web.client.HttpClientErrorException: 400 Bad Request
when I call webservice with Curl I have correct result:
curl -X POST -H "Authorization: Basic xxxxxxxxxx" --header "Content-Type: application/json" --header "Accept: application/json" -d "{ \"name\": \"name\", \"email\": \"[email protected]\" } " "url"
-
fall over 6 yearsCan the message converter convert a Java object into json string? Let's say input is an ojbect of type User. User = new User("name", "[email protected]");