Моя реализация httpclient иногда вызывает исключение при вызове doGetConnection (). Однако у меня установлен следующий тайм-аут
_moHttpClient.setHttpConnectionFactoryTimeout(30000);
похоже, что мой тайм-аут не забирается. Есть ли еще где-нибудь мне нужно установить тайм-аут, чтобы такое поведение не повторилось




HttpConnectionManagerParams cmparams = new HttpConnectionManagerParams();
cmparams.setSoTimeout(10000);
cmparams.setTcpNoDelay(true);
HttpConnectionManager manager = new SimpleHttpConnectionManager();
manager.setParams(cmparams);
params = new HttpClientParams();
params.setSoTimeout(5000);
client = new HttpClient(params, manager);
Интересно, почему у меня установлено два разных SoTimeout. Возможно, я пытался выяснить, какой из них действительно активен, поскольку у меня были те же проблемы, что и у вас, когда я его использовал.
Вышеупомянутое находится в живом коде у нас прямо сейчас, но я не могу сказать, работает ли это, потому что это правильно, или потому что провидение улыбается мне (а другой конец обычно всегда доступен).
cmparams.setSoTimeout(10000);
По умолчанию он предназначен для всех HttpClient.
params.setSoTimeout(5000);
И это для конкретного httpclient.
Какое исключение вы получаете?
Не забывайте, что у вас есть таймауты два для изменения / проверки. С HttpConnectionParams
setConnectionTimeout()
setSoTimeout()
так что вы можете контролировать, как долго вы ждете подключения к серверу и сколько времени могут потребоваться операции с сокетом до истечения времени ожидания.
Документы, похоже, указывают, что SO_TIMEOUT - это максимально допустимое время, в течение которого сервер не отвечает с момента последнего полученного пакета TCP. hc.apache.org/httpcomponents-core-ga/httpcore/apidocs/org/…