Вызов URL-адреса HttpClient не выполняется - PullRequest
0 голосов
/ 05 мая 2020

Я пытаюсь выполнить Http POST для API с машины linux. Но мой вызов URL-адреса завершается с ошибкой тайм-аута. Для этого я использую библиотеку httpclient-4.5.8. Предыстория: Изначально мой клиентский сервер не был включен в белый список, поэтому я получал "403-Forbidden" из URL. Но после внесения в белый список возникает ошибка тайм-аута.

public void PostMessage() {     
    try {

        final RequestConfig params = RequestConfig.custom().setConnectTimeout(3000).setSocketTimeout(3000).build();
        httpPost = new HttpPost(getUri());
        log4.debug("URL set up done for "+ httpPost.getURI());
        final StringEntity entity = new StringEntity(getMessage());
        httpPost.setConfig(params);
        httpPost.setEntity(entity);
        httpPost.setHeader("Content-type", "application/json");


        CloseableHttpResponse response = (CloseableHttpResponse) client.execute(httpPost);
        log4.info("Response Code:" + response.getStatusLine().getStatusCode());
        BufferedReader rd = new BufferedReader(new InputStreamReader(response.getEntity().getContent()));
        String line = "";
        while ((line = rd.readLine()) != null) {
            log4.info("Response Content:" + line);
        }
        } catch (IOException i) {
            log4.info("Error at PostClient.IOException. " + i.getMessage());
        } catch(Exception e) {
            log4.info("Error at PostClient.Exception. " + e.getMessage());
        }
}

Трассировка журнала: (Простите за маскировку)

"message": "URL-адрес настроен для https://ABCD.com/ "," logger ":" com.tesco.ReceiptClient.PublishClient.ReceiptPostClient: PostMessage "

" message ":" CookieSpe c selected: default "," logger ":" org. apache .http.client.protocol.RequestAddCookies: process "

" message ":" Кэш аутентификации не установлен в контексте "," logger ":" org. apache .http.client.protocol.RequestAuthCache: process "

" message ":" Запрос на соединение: [route: {s} -> https://ABCD.com: 443] [всего поддерживается: 0; маршрут выделен: 0 из 2; всего выделено: 0 из 20] »,« logger »:« org. apache .http.impl.conn.PoolingHttpClientConnectionManager: requestConnection »

« message »:« Соединение арендовано: [id: 1] [ маршрут: {s} -> https://ABCD.com: 443] [всего поддерживается: 0; маршрут выделен: 1 из 2; всего выделено: 1 из 20] "," logger ":" org. apache .http.impl.conn.PoolingHttpClientConnectionManager: leaseConnection "

" message ":" Открытие соединения {s} -> https://ABCD.com: 443"," logger ":" org. apache .http.impl.execchain.MainClientExe c: выполнить "

"message": "Подключение к ABCD.com/xxx.xx.xx.x:443","logger":"org.apache.http.impl.conn.DefaultHttpClientConnectionOperator:connect"

"message": "Подключение сокета к ABCD.com/xxx.xx.xx.x:443 с таймаутом 3000", "logger": "org. apache .http.conn.ssl.SSLConnectionSocketFactory: connectSocket"

"message": "http-outgoing-1: Shutdown connection", "logger": "org. apache .http.impl.conn.LoggingManagedHttpClientConnection: shutdown"

"сообщение ":" Соединение прервано "," регистратор ":" org. apache .http.impl.execchain.ConnectionHolder: abortConnection "

" message ":" Соединение освобождено: [id: 2] [route: {s} -> https://ABCD.com: 443] [всего осталось в живых: 0; выделено маршрутов: 0 из 2; всего выделено: 0 из 20] »,« logger »:« org. apache .http.impl.conn.PoolingHttpClientConnectionManager: releaseConnection »

« message »:« Ошибка в PostClient.IOException. Подключиться к ABCD.com:443 [ABCD.com/xxx.xx.xx.x] не удалось: время ожидания подключения истекло »,« logger »:« com.tesco.ReceiptClient.PublishClient.ReceiptPostClient: PostMessage »

1 Ответ

0 голосов
/ 05 мая 2020

Проверьте, есть ли связь с сервером (telnet / ping).

Обычно вы получаете Тайм-аут подключения ошибку, если у вас нет подключения к серверу и Тайм-аут чтения , если серверу требуется больше времени, чем задано конфигурацией «таймаут чтения».

...