Почему RestTemplate принимает объект не полностью?
Пытаюсь реализовать прокси-сервер для геокодировки через стороннее API - OpenCage.
API возвращает JSON объект, где есть массив результатов, каждый представляет собой набор одинаковых по структуре данных.
Если напрямую использовать http-запрос самого API, то на определенный адрес получаем 4 найденных результата. Если использовать RestTemplate и прокидывать запрос через него, то на выходе получаем 1 результат с такими же входными данными.
Если же получать запрос нативными классами из пакета java.net.*, то все отлично работает. Что не так с RestTemplate?
Немного попытался показать как я его использовал. Для отладки решил выводить тот же JSON, что и получаю. Результат отличается. https://pastebin.com/rwyFHfiL
uniloftsky, restTemplate.getForObject(API_URL, String.class);
Вместо String нужно указывать объект, который вы получаете. RestTemplate умеет десериализовывать автоматически. Вместо строки API_URL лучше использовать специальный объект - URI (скорее всего, проблема тут). Возможно, у вас разные url при запросе через браузер и через restTemplate.
Добавьте логирование - посмотрите какой url по факту вызывается.
Dmitry Roo, я изначально указывал объект и результат был такой же. Десериализировал в String чтобы посмотреть какой JSON мне приходит по факту. Так же изначально использовал UriComponentsBuilder, url адреса одинаковые.
uniloftsky, решили проблему? У меня на сервер вероятно приходит тоже часть от массива при использовании RestTemplate. Причем на одних машинах принимает нормально, на других частично
Егор Лепихин, Решил проблему таким образом, что просто данный запрос обрабатываю через класс самой Java в пакете java.net.* или можно обработать с помощью okHttp. После полученный JSON мапить через ObjectMapper. Скидываю ссылку на гитхаб, если интересна реализация: https://github.com/uniloftsky/spring5-geocoding-se...