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