#jsp #apache-httpclient-4.x #connectexception
Вопрос:
Я работаю над приложением, которое считывает ответ с определенных конечных точек, обрабатывает информацию и создает отчет в книге Excel. Таким образом, цель приложения-создать этот отчет .xlsx. Поскольку приложение просто считывает json с 2 конечных точек, я не использовал Spring или какую-либо другую веб-платформу, я просто создал метод, который использует Apache HttpClient для запроса ответов с конечных точек соответствующего веб-сайта, и создал отчет.
В начале приложение запрашивает необходимые входные данные (например, дату начала и окончания периода, за который должен быть создан отчет) у пользователя в консоли.
Однако теперь люди, которые дали мне задание, хотят, чтобы я создал страницу Всемирного банка, с которой должен быть сделан этот первоначальный ввод.
Мой вопрос в том, можно ли обрабатывать ввод этой страницы html или jsp без использования tomcat или рефакторинга приложения в приложение Spring Boot. Я уже использую Apache HttpClient, так как я могу обработать страницу с его помощью?
Это метод, в котором я пытаюсь использовать http-клиент:
public InputBean getRequiredDetails() throws IOException { String urlString = "http://localhost:8081/index.html"; HttpPost request = new HttpPost(urlString); CloseableHttpResponse response = httpClient.execute(request); return Utils.MAPPER.readValue(EntityUtils.toString(response.getEntity()), InputBean.class); }
Это страница jsp, которую я создал:
lt;%@ page language="java" contentType="text/html; charset=ISO-8859-1" pageEncoding="ISO-8859-1"%gt; lt;!DOCTYPE htmlgt; lt;htmlgt; lt;headgt; lt;meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1"gt; lt;titlegt;Forecast Reportlt;/titlegt; lt;/headgt; lt;bodygt; lt;h1gt;Forecast Reportlt;/h1gt; lt;form action="lt;%=request.getContextPath()%gt;/getInput" method="post"gt; lt;table style="with: 50%"gt; lt;trgt; lt;tdgt;Usernamelt;/tdgt; lt;tdgt;lt;input type="text" name="username" /gt;lt;/tdgt; lt;/trgt; lt;trgt; lt;tdgt;Passwordlt;/tdgt; lt;tdgt;lt;input type="text" name="password" /gt;lt;/tdgt; lt;/trgt; lt;trgt; lt;tdgt;Start datelt;/tdgt; lt;tdgt;lt;input type="text" name="start_date" /gt;lt;/tdgt; lt;/trgt; lt;trgt; lt;tdgt;End datelt;/tdgt; lt;tdgt;lt;input type="password" name="end_date" /gt;lt;/tdgt; lt;/trgt; lt;/tablegt; lt;br/gt; lt;input type="submit" value="Submit" /gt; lt;/formgt; lt;/bodygt; lt;/htmlgt;
And this is the input bean I created:
@Data @NoArgsConstructor @AllArgsConstructor public class InputBean { private String username; private String password; private String startDate; private String endDate; }
I read in internet about possible ways to make the request but I get ConnectException:
Exception in thread "main" java.net.ConnectException: Connection refused: connect at java.base/java.net.PlainSocketImpl.connect0(Native Method) at java.base/java.net.PlainSocketImpl.socketConnect(PlainSocketImpl.java:101) at java.base/java.net.AbstractPlainSocketImpl.doConnect(AbstractPlainSocketImpl.java:399) at java.base/java.net.AbstractPlainSocketImpl.connectToAddress(AbstractPlainSocketImpl.java:242) at java.base/java.net.AbstractPlainSocketImpl.connect(AbstractPlainSocketImpl.java:224) at java.base/java.net.SocksSocketImpl.connect(SocksSocketImpl.java:403) at java.base/java.net.Socket.connect(Socket.java:608) at org.apache.http.conn.scheme.PlainSocketFactory.connectSocket(PlainSocketFactory.java:121) at org.apache.http.impl.conn.DefaultClientConnectionOperator.openConnection(DefaultClientConnectionOperator.java:180) at org.apache.http.impl.conn.ManagedClientConnectionImpl.open(ManagedClientConnectionImpl.java:326) at org.apache.http.impl.client.DefaultRequestDirector.tryConnect(DefaultRequestDirector.java:605) at org.apache.http.impl.client.DefaultRequestDirector.execute(DefaultRequestDirector.java:440) at org.apache.http.impl.client.AbstractHttpClient.doExecute(AbstractHttpClient.java:835) at org.apache.http.impl.client.CloseableHttpClient.execute(CloseableHttpClient.java:83) at org.apache.http.impl.client.CloseableHttpClient.execute(CloseableHttpClient.java:108) at com.dataart.forecasts.http.HttpConnector.getRequiredDetails(HttpConnector.java:74) at com.dataart.forecasts.ForecastReportApplication.main(ForecastReportApplication.java:56)
Поэтому я предполагаю, что это результат того факта, что у меня есть клиент, но нет сервера. Я поместил tomcat в качестве зависимости в свой проект, но все еще не знаю, как это обработать. До сих пор я использовал Spring boot для веб-приложений, там встроен Tomcat, и у меня нет большого опыта работы с HttpClient. Пожалуйста, помогите!