С Apache HttpClient, почему мой тайм-аут подключения не работает?
Моя реализация httpclient иногда вызывает исключение при вызове doGetConnection(). Однако у меня есть следующий тайм-аут
_moHttpClient.setHttpConnectionFactoryTimeout(30000);
он выглядит почти как мой тайм-аут не подбирается. Есть ли где-нибудь еще мне нужно установить тайм-аут, чтобы это поведение не повторялось
Ответы
Ответ 1
Какое исключение вы получаете?
Не забывайте, что у вас есть два таймаута для изменения/проверки. От HttpConnectionParams
setConnectionTimeout()
setSoTimeout()
чтобы вы могли контролировать, как долго вы будете ждать подключения к серверу, и как долго могут выполняться операции сокета до истечения времени ожидания.
Ответ 2
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);
Интересно, почему у меня есть два разных SoTimeouts. Возможно, я пытался выяснить, какой из них действительно активен, поскольку у меня были те же проблемы, что и вы, когда я его использовал.
Вышеуказанное находится в прямом коде в нашем месте прямо сейчас, но я не могу сказать, работает ли это, потому что это правильно, или потому, что провидение улыбается мне (и другой конец обычно всегда доступен).
Ответ 3
cmparams.setSoTimeout(10000);
Этот параметр используется для всех HttpClient по умолчанию.
params.setSoTimeout(5000);
И это для конкретного httpclient.