170 похожих чатов

Доброго времени суток. Я пытаюсь разобраться в работе java.net.http.HttpClient Столкнулся с

тем, что клиент после получения данных не закрывает TCP сессию.
После того как HTTP запрос уходит на удалённый сервер, сервер отвечает. Но клиент не отправляет пакеты с флагом FIN как я ожидал, если сервер после передачи запрошенных данных присылает кипэлайвед, клиент отвечает на них. И из того, что я вижу в дампах трафика сессию закрывает всегда сервер. Единственный способ заставить HttpClient завершить сессию который я нашёл выглядит как зануление ссылки на клиент и вызов сборщика мусора, но это же не выход.

код простейший, можно посмотреть тут: https://github.com/maxpushpashev/httpClient

При использовании например HttpClient от Apache можно вызвать метод закрытия сессии. А тут не вижу такого.
Может я что-то делаю не так?

4 ответов

30 просмотров

-Dhttp.keepAlive=false

Максим- Автор вопроса
Alex
-Dhttp.keepAlive=false

Завтра гляну. Спасибо

Ситуация то что клиент не закрывает соединение сам пока ему не скажет об этом сервер следует из того что HttpClient поддерживает HTTP 1.1 в котором вот такое поведение стандартное. HTTP/1.1 defines the "close" connection option for the sender to signal that the connection will be closed after completion of the response. For example, Connection: close in either the request or the response header fields indicates that the connection SHOULD NOT be considered `persistent' (section 8.1) after the current request/response is complete. Следуя букве закона можно послать сообщение "Connection: close" в header и тогда сервер должен соединение закрыть и не открывать новое. (Как всегда некоторые серверы это могут игнорировать). Закроется ли правильно соединение в пуле java.net.http.HttpClient нужно проверять, тут я к сожалению опыта не имею, проверять самому не приходилось.

Максим- Автор вопроса
Evgeniy Latuhin
Ситуация то что клиент не закрывает соединение сам...

Спасибо. И правда помогло. Только хидер restricted и его надо разрешить через систем проперти, которое в openJDK 11.0.12 не работает, но работает в coretto11.0.14

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

Обсуждают сегодня

Господа, а что сейчас вообще с рынком труда на делфи происходит? Какова ситуация?
Rꙮman Yankꙮvsky
29
А вообще, что может смущать в самой Julia - бы сказал, что нет единого стандартного подхода по многим моментам, поэтому многое выглядит как "хаки" и произвол. Короче говоря, с...
Viktor G.
2
30500 за редактор? )
Владимир
47
а через ESC-код ?
Alexey Kulakov
29
Чёт не понял, я ж правильной функцией воспользовался чтобы вывести отладочную информацию? но что-то она не ловится
notme
18
У меня есть функция где происходит это: write_bit(buffer, 1); write_bit(buffer, 0); write_bit(buffer, 1); write_bit(buffer, 1); write_bit(buffer, 1); w...
~
14
Добрый день! Скажите пожалуйста, а какие программы вы бы рекомендовали написать для того, чтобы научиться управлять памятью? Можно написать динамический массив, можно связный ...
Филипп
7
Недавно Google Project Zero нашёл багу в SQLite с помощью LLM, о чём достаточно было шумно в определённых интернетах, которые сопровождались рассказами, что скоро всех "ибешни...
Alex Sherbakov
5
Ребят в СИ можно реализовать ООП?
Николай
33
https://github.com/erlang/otp/blob/OTP-27.1/lib/kernel/src/logger_h_common.erl#L174 https://github.com/erlang/otp/blob/OTP-27.1/lib/kernel/src/logger_olp.erl#L76 15 лет назад...
Maksim Lapshin
20
Карта сайта