HttpClient 4.0.1 - как освободить соединение?

У меня есть цикл по нескольким URL-адресам, для каждого из которых я делаю следующее:

private String doQuery(String url) {

  HttpGet httpGet = new HttpGet(url);
  setDefaultHeaders(httpGet); // static method
  HttpResponse response = httpClient.execute(httpGet);   // httpClient instantiated in constructor

  int rc = response.getStatusLine().getStatusCode();

  if (rc != 200) {
    // some stuff...
    return;
  }

  HttpEntity entity = response.getEntity();

  if (entity == null) {
    // some stuff...
    return;
  }

  // process the entity, get input stream etc

}

Первый запрос в порядке, второй вызывает это исключение:

Исключение в поток "основной" частный String doQuery (String url) {HttpGet httpGet = new HttpGet (url); setDefaultHeaders (httpGet); // статический метод ...

У меня есть цикл по нескольким URL-адресам, для каждого из которых я делаю следующее:

private String doQuery(String url) {

  HttpGet httpGet = new HttpGet(url);
  setDefaultHeaders(httpGet); // static method
  HttpResponse response = httpClient.execute(httpGet);   // httpClient instantiated in constructor

  int rc = response.getStatusLine().getStatusCode();

  if (rc != 200) {
    // some stuff...
    return;
  }

  HttpEntity entity = response.getEntity();

  if (entity == null) {
    // some stuff...
    return;
  }

  // process the entity, get input stream etc

}

Первый запрос в порядке, второй вызывает это исключение:

Исключение в поток "основной" частный String doQuery (String url) {HttpGet httpGet = new HttpGet (url); setDefaultHeaders (httpGet); // статический метод ...

У меня есть цикл по кучке URL-адресов, для каждого из которых я делаю следующее:

private String doQuery(String url) {

  HttpGet httpGet = new HttpGet(url);
  setDefaultHeaders(httpGet); // static method
  HttpResponse response = httpClient.execute(httpGet);   // httpClient instantiated in constructor

  int rc = response.getStatusLine().getStatusCode();

  if (rc != 200) {
    // some stuff...
    return;
  }

  HttpEntity entity = response.getEntity();

  if (entity == null) {
    // some stuff...
    return;
  }

  // process the entity, get input stream etc

}

Первый запрос в порядке, второй вызывает это исключение:

Исключение в поток "основной" java.lang.IllegalStateException: Недействительное использование SingleClientConnManager: соединение все еще выделяется. Обязательно отпустите соединение перед выделением другой. в org.apache.http.impl.conn.SingleClientConnManager.getConnection (SingleClientConnManager.java:199) в org.apache.http.impl.conn.SingleClientConnManager $ 1.getConnection (SingleClientConnManager.java:173) ......

Это простое однопоточное приложение. Как я могу отключить это соединение?

70
задан borjab 14 September 2016 в 08:22
поделиться