Шаблон Spring Spring Rest не публикует JSON как строку - PullRequest
0 голосов
/ 05 июля 2018

Я пытаюсь сделать запрос к базе данных ElasticSearch, используя ее Rest API. Я строю клиента на Java с помощью Spring restTemplate.

Сначала я попробовал запрос с помощью клиента почтальона, и он работает нормально. Например:

На почтальоне :

 Url : http://localhost:9200/index/_search
    Headers: Content-Type : application/json
    Body: Raw
    Body content: {
        "_source": ["_id", "message"],
         "query": {
         "match_all": {}
   }
 }

А в классе Java:

  RestTemplate restTemplate = new RestTemplate();

  HttpHeaders headers = new HttpHeaders();

  headers.setContentType(MediaType.APPLICATION_JSON);

  HttpEntity<String> entity = new HttpEntity<String>(input, headers);
  ResponseEntity<String> loginResponse = restTemplate
      .exchange(url, 
  HttpMethod.POST, entity, String.class);

Исключением является ошибка 500 Internal Server. Я могу выполнить простой запрос на получение, но у меня возникла проблема при публикации данных JSON в запросе на публикацию. В чем может быть причина внутренней ошибки сервера?

Вот трассировка стека, напечатанная на консоли.

21:10:59.718 [main] DEBUG org.springframework.web.client.RestTemplate - Created POST request for "http://localhost:9200/index/_search"
21:10:59.738 [main] DEBUG org.springframework.web.client.RestTemplate - Setting request Accept header to [text/plain, */*]
21:10:59.740 [main] DEBUG org.springframework.web.client.RestTemplate - Writing [{"_source": ["_id","message"], "query": {"match_all": {}}] as "application/json" using [org.springframework.http.converter.StringHttpMessageConverter@6522d847]
21:10:59.967 [main] WARN org.springframework.web.client.RestTemplate - POST request for "http://localhost:9200/index/_search" resulted in 500 (Internal Server Error); invoking error handler
org.springframework.web.client.HttpServerErrorException: 500 Internal Server Error
    at org.springframework.web.client.DefaultResponseErrorHandler.handleError(DefaultResponseErrorHandler.java:71)
    at org.springframework.web.client.RestTemplate.handleResponseError(RestTemplate.java:486)
    at org.springframework.web.client.RestTemplate.doExecute(RestTemplate.java:443)
    at org.springframework.web.client.RestTemplate.execute(RestTemplate.java:401)
    at org.springframework.web.client.RestTemplate.postForObject(RestTemplate.java:279)

Вот изображение из отладчика eclipse, более подробно указывающее на ошибку. Eclipse Debugger Stack Trace

...