Я получил два контейнера, определенных в файле docker-compose:
tomcat_webserver_api:
image: tomcat:8
volumes:
- ./API/Docker/API.war:/usr/local/tomcat/webapps/API.war
ports:
- "8080:8080"
depends_on:
- mysql_database
tomcat_webserver_anwendung:
image: tomcat:8
ports:
- "8081:8080"
volumes:
- ./Anwendung/Docker/Anwendung.war:/usr/local/tomcat/webapps/Anwendung.war
depends_on:
- tomcat_webserver_api
environment:
API_HOST: tomcat_webserver_api
API_PORT: 8080
Теперь я хочу получить доступ к URL http://tomcat_webserver_api:8080/API/restaurants/Wochentag
изнутри веб-приложения Java с помощью HttpURLConnection.
Проблема: возвращается ошибка 400
java.io.IOException: Server returned HTTP response code: 400 for URL: http://tomcat_webserver_api:8080/API/restaurants/Wochentag
Код выглядит так (Заголовки почти одинаковы, когда я пытаюсь подключиться к URL через curl - это работает внутри контейнера, да):
URL api = UriBuilder.fromUri("http://" + "tomcat_webserver_api" + ":" + "8080" +"/API/restaurants/RestaurantSpeisen").build().toURL();
System.setProperty("http.agent", "curl/7.52.1");
HttpURLConnection connection = (HttpURLConnection) api.openConnection();
connection.setRequestMethod("GET");
connection.setRequestProperty("Host", "localhost");
connection.setRequestProperty("User-Agent", "curl/7.52.1");
connection.connect();
BufferedReader in = new BufferedReader(new InputStreamReader(connection.getInputStream(), "UTF-8"));
Если я пытаюсь подключиться к http://172.20.0.3:8080/API/restaurants/Wochentag
, я получаю 200-й код ответа HTTP и данные JSON.
Если я выполняю контейнер API и проверяю журналы, я вижу запрос GET 400.
Почему это происходит?
http://172.20.0.3:8080/API/restaurants/Wochentag
- Работы
http://tomcat_webserver_api:8080/API/restaurants/Wochentag
- не будет работать, но не с ошибкой 404