Ответ 1
После вызова:
HttpResponse rp = HttpSigleton.getInstance().execute(get);
Пожалуйста, убедитесь, что вы звоните:
String html = EntityUtils.toString(rp.getEntity() /*, Encoding */);
или
EntityUtils.consume(rp.getEntity());
Возможный дубликат:
Исключение с использованием HttpRequest.execute(): Недопустимое использование SingleClientConnManager: соединение все еще выделено
Я работаю в Android. Я создал класс HttpSingleton для создания единого запуска HttpClient в моем полном приложении.
Это мой код для использования этого класса: -
HttpGet get = new HttpGet("url/dologin/savitagupta/savitagupta");
**HttpResponse rp = HttpSigleton.getInstance().execute(get);**
if (rp.getStatusLine().getStatusCode() == HttpStatus.SC_OK) {
// some code here
}
и это мой класс для одного экземпляра
public class HttpSigleton {
private static HttpClient instance = null;
protected HttpSigleton() {
}
public static HttpClient getInstance() {
if(instance == null) {
instance =new DefaultHttpClient();
}
return instance;
}
}
Затем возникает ошибка: -
SingleClientConnManager: недопустимое использование SingleClientConnManager: соединение все еще выделено. Обязательно отпустите соединение, прежде чем выделять другой. Пожалуйста, предложите мне, какую ошибку я сделал. Мне действительно нужна твоя помощь. Заранее благодарю вас.
После вызова:
HttpResponse rp = HttpSigleton.getInstance().execute(get);
Пожалуйста, убедитесь, что вы звоните:
String html = EntityUtils.toString(rp.getEntity() /*, Encoding */);
или
EntityUtils.consume(rp.getEntity());
Для Android:
Если вас не интересует контент, самый дешевый способ избавиться от вашего соединения и избежать ошибки "все еще выделенное соединение":
httpResponse.getEntity().consumeContent();
См. http://developer.android.com/reference/org/apache/http/HttpEntity.html#consumeContent()