HttpClient - установка "глобального" времени ожидания сокета и отдельного времени ожидания для запроса

С помощью HttpClient я устанавливаю сокет / сокет по умолчанию для следующего соединения:

HttpParams params = new BasicHttpParams();

HttpConnectionParams.setSoTimeout(params, 30000);
HttpConnectionParams.setConnectionTimeout(params, 30000);

mClient = new DefaultHttpClient(connectionManager, params);

Мне интересно, могу ли я переопределить эти значения для каждого запроса?

Изменить: это будет работать?

HttpParams params = req.getParams(); // req is an HttpRequest object
HttpConnectionParams.setSoTimeout(params, 60000);
HttpConnectionParams.setConnectionTimeout(params, 60000);

Я попробовал это, и похоже, но сложно протестировать / создать ситуацию, когда произойдет тайм-аут.

2 ответа

Решение

Если вы используете HttpClient 4.0, вы можете сделать это:

mClient = new DefaultHttpClient(connectionManager, params) {
  protected HttpParams determineParams(HttpRequest req) {
    //Fill in your impl here
 }

Вы можете просто установить эти параметры в объекте запроса. Для получения дополнительной информации см. http://hc.apache.org/httpcomponents-client-ga/tutorial/html/connmgmt.html

Другие вопросы по тегам