我已经在 Google 上搜索了这个特定的例外情况,并且出现了多个结果,但我还没有看到我所遇到问题的答案。我目前正在以下列方式访问某个服务器上的 API:
// Setup...
HttpClient httpClient = new DefaultHttpClient();
HttpPost httpPost = new HttpPost(url);
List<NameValuePair> nameValuePair = new ArrayList<NameValuePair>();
nameValuePair.add(new BasicNameValuePair("key","value"));
httpPost.setEntity(new UrlEncodedFormEntity(nameValuePair));
HttpResponse response = httpClient.execute(httpPost);
String results = EntityUtils.toString(response.getEntity())
当然,上面的代码与我使用的代码不完全相同。任何 UI 阻塞任务都使用 AsyncTask 在单独的线程上完成。
当这段代码第一次执行时,一切都很好。然后我们再次执行代码,出现如下异常,但只在Android 2.2和2.3(我没有在3.0或4.0上测试过):
Invalid use of SingleClientConnManager: connection still allocated
现在,可以在此处找到此问题的最佳答案之一:Exception using HttpRequest.execute(): Invalid use of SingleClientConnManager: connection still assigned,我没有尝试过,但在此之前,我想知道为什么这个异常不是当我在 Android 4.1 上运行它时被抛出?