Я использую ThreadSafeClientConnManager для управления пулом подключений клиента , поскольку мое приложение имеет несколько потоков, которые одновременно подключаются к веб-серверу.Отменить/прервать соединение из пула соединений ThreadSafeClientConnManager
Аннотация Пример кода:
HttpClient httpClient;
ClientConnectionManager conMgr = new ThreadSafeClientConnManager(parameters,schReg);
httpclient = new DefaultHttpClient(conMgr, parameters);
Теперь давайте говорить на этой резьб загрузки большого файла, но пользователь мое приложение переходит на другой вид деятельности/экран. Поэтому файл бесполезен, и я хотел бы прекратить это подключение для загрузки.
В ThreadSafeClientConnManager я нашел этот метод:
public ClientConnectionRequest requestConnection (HttpRoute route, Object state)
Возвращает новый ClientConnectionRequest, из которого ManagedClientConnection может быть получен или запрос может быть прервана.
До сих пор я использую:
HttpGet httpRequest = new HttpGet(URL_TO_FILE);
HttpResponse response = (HttpResponse) httpclient.execute(httpRequest);
[...]
Теперь от того, что я понимаю, у меня использовать:
httpclient.getConnectionManager().requestConnection(HttpRoute route, Object state);
И это та точка, где я застрял. Я предполагаю, что для маршрута я могу просто использовать new HttpRoute(new HttpHost("10.0.0.1"))
или что-то еще, что мой сервер, но что положить в Object state
?
И, во-вторых, как только у меня есть ClientConnectionManager
Я могу позвонить getConnection(long timeout, TimeUnit tunit)
. Но потом оттуда, как я делаю, я выполняю свой HttpGet httpRequest = new HttpGet(URL_TO_FILE);
, как и раньше, с HttpResponse response = (HttpResponse) httpclient.execute(httpRequest);
?
Я прошел через документацию и опробовал несколько разных вещей, но я не смог получить рабочее решение. Поэтому любые предложения и/или примеры кода более чем приветствуются.
Спасибо. Это намного проще, чем то, что я пытался сделать ;-) Соединение не появляется в netstat больше после abort(). Я предполагаю, что он тогда закрыт. – znq