Почему Spring RestTemplate.getForObject () для localhost получает 404, когда curl на идентичный URL с того же хоста работает нормально? - PullRequest
0 голосов
/ 21 января 2020

У меня есть служба SpringBoot, которая обычно выполняет вызов внешней REST-службы. Как правило, работает нормально. Внешним сервисом является Bing Maps, но это не важно.

Мне нужно сделать временный макет результатов, предоставляемых этим внешним сервисом, поэтому я создал небольшое приложение SpringBoot Jersey и дал одно Метод ресурса имеет то же значение Path, что и вызываемая служба. Я запускаю его в Eclipse и устанавливаю точку останова в этом методе. Я запустил этот фиктивный сервис на порту 8090.

В основном сервисе я также запускаю его в Eclipose и устанавливаю точку останова в точке, где он собирается вызывать Bing Maps. Я сохранил полный URL, к которому он подключается. Из оболочки я использовал «curl» для подключения к этому URL, изменив host: port на «localhost: 8090», чтобы он переходил в службу mock вместо реальной службы Bing Maps. Он достиг точки останова в методе в моей фиктивной службе, и я позволил ему вернуться к основному сервису, и результат соответствовал тому, что я отправил обратно из фиктивной службы.

Затем я вернулся к точке останова в основном сервисе и изменил URL, к которому он собирался подключиться, чтобы быть точным URL, к которому я подключился из «curl». Я позволил этому продолжаться.

Вызов не удался с 404. Он никогда не достигал точки останова в фиктивной службе.

Я затрудняюсь понять это. И основная служба, и служба имитации работают на моем ноутбуке, прослушивая порты 8080 и 8090 соответственно.

Почему я могу получить URL-адрес фиктивной службы из curl из моей оболочки, но не из службы?

...