Httpclient 4.5 принимает двойное время для закрытия http-соединения - PullRequest
0 голосов
/ 08 января 2019

Время соединения составляет 5000 миллисекунд (5 секунд), но на самом деле это занимает 10127 миллисекунд (10.127 секунд)

если время ожидания соединения = 10000 миллисекунд (10 секунд), то время ожидания соединения составляет 20032 миллисекунды (20 секунд)

ниже приведен код, который я пробовал.

public static void getTest() 
{
     long start=0;

     try {

            CloseableHttpClient httpClient = HttpClients.createDefault();
            HttpGet httpGet = new HttpGet("http://testing url");
            RequestConfig config=null;
             config = RequestConfig.custom()
                     .setConnectTimeout(5000)
                     .setConnectionRequestTimeout(5000)
                     .setSocketTimeout(5000)
                     .build();
             httpGet.setConfig(config);
             start = System.currentTimeMillis();
             httpClient.execute(httpGet);
    } catch (Exception e) {
        long end=System.currentTimeMillis();
        System.out.println("total time in Milliseconds:="+(end-start));
    }

}

1 Ответ

0 голосов
/ 28 июня 2019

Причина - неудачный HTTP-запрос POST будет автоматически переслан на сервер. Неудачная публикация означает, что в этом случае сервер не отправил действительный ответ HTTP или произошел IOException, а значение HTTP PostRetry по умолчанию равно true в JVM. Есть несколько способов предотвратить молчание HttpRetry, пожалуйста, обратитесь к таблице ниже.

enter image description here

Это основная причина удвоения точного времени ожидания.

...