#android #httpclient
#Android #httpclient
Вопрос:
У меня есть класс для Httpclient. Один и тот же экземпляр используется во всем приложении. Таким образом, если клиент == null, он должен создать еще один, он вернет существующий экземпляр. Все работает, пока я не попытаюсь освободить ресурс при выходе, выполнив: client.getConnectionManager().shutdown();…. после этого я не могу снова войти в систему. Выдает системную ошибку с надписью: завершение работы пула соединений. Вот класс:
public class HttpClientFactory {
private static DefaultHttpClient client;
public synchronized static DefaultHttpClient getThreadSafeClient() {
if (client != null)
return client;
client = new DefaultHttpClient();
SchemeRegistry schemeRegistry = new SchemeRegistry();
schemeRegistry.register(new Scheme("http", PlainSocketFactory.getSocketFactory(), 80));
schemeRegistry.register(new Scheme("https", SSLSocketFactory.getSocketFactory(), 443));
HttpParams params = new BasicHttpParams();
SingleClientConnManager mgr = new SingleClientConnManager(params, schemeRegistry);
client = new DefaultHttpClient(mgr, params);
return client;
}
}
После этого я просто запускаю client.getConnectionManager().shutdown(); onBackPressed(), кто-нибудь, пожалуйста, может мне помочь
Ответ №1:
Хорошо .. я нашел решение…Я не устанавливал его обратно в значение null, и предполагается, что завершение работы соединения выполняется в том же глобальном классе…
Ответ №2:
Я столкнулся с аналогичной проблемой, но установил
client.getConnectionManager().shutdown()
client.getConnectionManager() = null
не удалось устранить проблему.
Наконец, я обнаружил, что я закрыл все соединения в onPostExecute, что неверно, поэтому после перемещения их в doInBackground это работает.
Надеюсь, это кому-то поможет!
Комментарии:
1. зачем нужен client.getConnectionManager() = null? Левая часть назначения должна быть переменной