С 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.