Spring boot RestTemplate.exchange дает пустой набор результатов с объектом String.Class
Я использую Spring загрузочную версию 2.1.3 и пытаюсь сделать перерыв с RestTemplate. Пожалуйста, проверьте код ниже.
final String uri = "https://devserver.slm.com/api/now/table/cmdb_ci_business_app";
RestTemplate restTemplate = new RestTemplate();
String plainCreds = "devTest:DevTest123";
byte[] plainCredsBytes = plainCreds.getBytes();
byte[] base64CredsBytes = Base64.encodeBase64(plainCredsBytes);
String base64Creds = new String(base64CredsBytes);
HttpHeaders headers = new HttpHeaders();
headers.add("Authorization", "Basic " + base64Creds);
headers.setContentType(MediaType.APPLICATION_JSON);
HttpEntity<String> entity = new HttpEntity<String>("parameters", headers);
ResponseEntity<String> response = restTemplate.exchange(uri, HttpMethod.GET, entity, String.class);
log.info("Result output is: "+ response.getBody());
При выполнении кода я получаю в терминале следующий вывод.
[INFO ] 2020-07-01 18:12:42.906 [scheduling-1] ConsumingRest - Result output is: {"result":[{},{},{},{},{},{},{},{},{},{},{},{},{},{},{}]}
Проблема в том, что я получаю нулевой вывод, тогда как если я запускаю тот же API с Postman, я получаю данные. Может ли кто-нибудь помочь мне понять, где я делаю ошибку?
Вот те же данные JSON, которые я получаю с Postman.
{
"result": [
{
"number": "APM013",
"sys_created_on": "2019-09-03 14:16:52",
"name": "Integration",
"business_id": "PA913",
"routine_id": "4303"
},
{
"number": "AP014",
"sys_created_on": "2019-09-03 14:16:54",
"name": "AC Equipement",
"business_id": "PA914",
"routine_id": "1558"
}
]}
С уважением, ДК
1 ответ
Вероятно, проблема здесь:
HttpEntity<String> entity = new HttpEntity<String>("parameters", headers);
Изменив это на:
HttpEntity entity = new HttpEntity(headers);
вероятно исправит (если нет другой проблемы).
Также будет полезно, если вы сможете поделиться документацией по API, которую пытаетесь поразить.