Android ThreadSafeClientConnManager Тайм-ауты?

1

Я использую ThreadSafeClientConnManager для выполнения одновременных запросов в фоновом режиме на Android, настроенных с помощью

HttpParams params = new BasicHttpParams();
HttpProtocolParams.setVersion(params, HttpVersion.HTTP_1_1);
HttpProtocolParams.setContentCharset(params, HTTP.DEFAULT_CONTENT_CHARSET);
HttpProtocolParams.setUseExpectContinue(params, true);

SchemeRegistry registry = new SchemeRegistry();
registry.register(new Scheme("http", PlainSocketFactory.getSocketFactory(), 80));
registry.register(new Scheme("https", SSLSocketFactory.getSocketFactory(), 443));

ClientConnectionManager connman = new ThreadSafeClientConnManager(params, registry);
client = new DefaultHttpClient(connman, params);

И выполнение запросов с (обратите внимание, что я использую outh-signpost):

HttpGet request = new HttpGet("https://" + API_HOST + "/" + API_VERSION + path);
OAuthConsumer consumer = new CommonsHttpOAuthConsumer(key, secret);
consumer.sign(request);
HttpResponse response = client.execute(request);

Проблема в том, что через некоторое время я начинаю получать

java.net.SocketException: The operation timed out

Нужно ли мне что-то делать, чтобы явно освободить соединение после запроса?

Теги:
multithreading
httprequest

1 ответ

2
Лучший ответ

Из руководства по использованию apache httpclient вам необходимо убедиться, что вы потребляете весь контент на любом объединенном ресурсе, чтобы гарантировать, что он вернется в пул, который будет доступен для других потоков позже -

http://hc.apache.org/httpcomponents-core-4.0.1/tutorial/html/fundamentals.html#d0e244

Если возникает исключение, созданное базовой библиотекой, лучше прекратить HttpMethod, который вы пытались запустить, и в этом случае соединение будет прекращено.

  • 0
    Это очень помогло, спасибо!
  • 1
    Ссылка 404, не найдена!

Ещё вопросы

Сообщество Overcoder
Наверх
Меню