Задать вопрос

Проверка доступности сайта через Apache HttpClient 4?

Добрый день.
Помогите разобраться, в чем у меня проблема.
Есть вот такой метод:
private static Boolean checkHttp() throws IOException {
        RequestConfig config = RequestConfig.custom()
                .setConnectTimeout(80000)
                .setConnectionRequestTimeout(80000)
                .setSocketTimeout(80000).build();

        CloseableHttpClient client = HttpClientBuilder.create().setDefaultRequestConfig(config).build();
        HttpResponse response = client.execute(new HttpGet(TestHttpStatus.HTTP_URL));
        int statusCode = response.getStatusLine().getStatusCode();
        client.close();
        return statusCode == 200;
    }


Данный метод запускается несколько раз, после перезапуска службы на удаленном сервере.
Проблема заключается в том, что первый раз он отрабатывается отлично, но при попытки вызывать его дальше по коду, получаю exception:
org.apache.http.conn.HttpHostConnectException: Connect to 1.2.0.3:8023 [/1.2.0.3] failed: Connection refused: connect
	at org.apache.http.impl.conn.DefaultHttpClientConnectionOperator.connect(DefaultHttpClientConnectionOperator.java:156)
	at org.apache.http.impl.conn.PoolingHttpClientConnectionManager.connect(PoolingHttpClientConnectionManager.java:374)
	at org.apache.http.impl.execchain.MainClientExec.establishRoute(MainClientExec.java:393)
	at org.apache.http.impl.execchain.MainClientExec.execute(MainClientExec.java:236)
	at org.apache.http.impl.execchain.ProtocolExec.execute(ProtocolExec.java:185)
	at org.apache.http.impl.execchain.RetryExec.execute(RetryExec.java:89)
	at org.apache.http.impl.execchain.RedirectExec.execute(RedirectExec.java:110)
	at org.apache.http.impl.client.InternalHttpClient.doExecute(InternalHttpClient.java:185)
	at org.apache.http.impl.client.CloseableHttpClient.execute(CloseableHttpClient.java:83)
	at org.apache.http.impl.client.CloseableHttpClient.execute(CloseableHttpClient.java:108)
	at TestHttpStatus.checkHttp(TestHttpStatus.java:46)
	at TestHttpStatus.main(TestHttpStatus.java:32)
Caused by: java.net.ConnectException: Connection refused: connect
	at java.net.DualStackPlainSocketImpl.waitForConnect(Native Method)
	at java.net.DualStackPlainSocketImpl.socketConnect(DualStackPlainSocketImpl.java:85)
	at java.net.AbstractPlainSocketImpl.doConnect(AbstractPlainSocketImpl.java:350)
	at java.net.AbstractPlainSocketImpl.connectToAddress(AbstractPlainSocketImpl.java:206)
	at java.net.AbstractPlainSocketImpl.connect(AbstractPlainSocketImpl.java:188)
	at java.net.PlainSocketImpl.connect(PlainSocketImpl.java:172)
	at java.net.SocksSocketImpl.connect(SocksSocketImpl.java:392)
	at java.net.Socket.connect(Socket.java:589)
	at org.apache.http.conn.socket.PlainConnectionSocketFactory.connectSocket(PlainConnectionSocketFactory.java:75)
	at org.apache.http.impl.conn.DefaultHttpClientConnectionOperator.connect(DefaultHttpClientConnectionOperator.java:142)
	... 11 more


Вроде использую CloseableHttpClient и закрываю его, но все равно не получается.
Прощу помощи или совета, как это починить.
  • Вопрос задан
  • 234 просмотра
Подписаться 3 Простой Комментировать
Пригласить эксперта
Ответы на вопрос 1
Losted
@Losted
Software Architect
Целевой сервер никакой защиты от повторяющихся запросов не имеет?

PS. Безотносительно этой проблемы - закрывайте клиента в finally блоке или используйте try-with-resource конструкцию
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы