web-dev-qa-db-fra.com

REST POST fonctionne correctement avec POSTMAN mais exception lors de l'utilisation de Spring RestTemplate

J'écris un client Rest pour publier des données JSON à l'aide de Spring RestTemplate. En utilisant POSTMAN et en suivant les données JSON dans le corps, obtenez la réponse correctement-

{
    "InCode":"test",
    "Name":"This is  test",
    "Email":"[email protected]",
    "Id":18,
}

Cependant, lorsque vous essayez d'appuyer sur l'API REST en utilisant Spring RestTemplate comme suit

ResponseEntity<String> response = restTemplate.exchange(baseUrl,
                HttpMethod.POST, getHeaders(), String.class);

private HttpEntity<?> getHeaders() throws JSONException {
JSONObject request = new JSONObject();
        request.put("Email", "[email protected]");
        request.put("Id", "18");
        request.put("Name", "This is  test");
        request.put("InCode", "test");

        headers.set("Accept", MediaType.APPLICATION_JSON_VALUE);
        return new HttpEntity<>(request.toString(), headers);
        }

Je reçois l'exception-

11:52:56.808 [main] DEBUG o.s.web.client.RestTemplate - Created POST request for "http://server-test/platform/v4/org"
11:52:56.815 [main] DEBUG o.s.web.client.RestTemplate - Setting request Accept header to [text/plain, application/json, application/*+json, */*]
12:03:47.357 [main] DEBUG o.s.web.client.RestTemplate - Writing [{"InCode":"test","Email":"[email protected]","Id":"18","Name":"This is  test"}] using [org.springframework.http.converter.StringHttpMessageConverter@6a1aab78]
11:52:57.574 [main] DEBUG o.s.web.client.RestTemplate - POST request for "http://server-test/platform/v4/org" resulted in 500 (Internal Server Error); invoking error handler
Exception in thread "main" org.springframework.web.client.HttpServerErrorException: 500 Internal Server Error
    at org.springframework.web.client.DefaultResponseErrorHandler.handleError(DefaultResponseErrorHandler.Java:94)
    at org.springframework.web.client.RestTemplate.handleResponse(RestTemplate.Java:641)
    at org.springframework.web.client.RestTemplate.doExecute(RestTemplate.Java:597)
    at org.springframework.web.client.RestTemplate.execute(RestTemplate.Java:557)
    at org.springframework.web.client.RestTemplate.exchange(RestTemplate.Java:475)

Serait reconnaissant pour toute aide.

11
Rehan

Vous définissez l'en-tête "Accepter", qui définit le type de contenu que vous accepterez comme réponse.

Au lieu de cela, vous devez définir l'en-tête "Content-Type" avec "application/json".

Éditer:

Dans votre Java code id est une chaîne, dans le facteur c'est un nombre. Cela peut-il faire échouer le serveur?