zoukankan      html  css  js  c++  java
  • httpclient 释放连接的问题 Invalid use of SingleClientConnManager: connection still allocated

    Invalid use of SingleClientConnManager: connection still allocated


    httpPost.releaseConnection();  该代码只会复用连接,并不会关闭当前连接,其实下面的方法client.getConnectionManager().closeIdleConnections(0, TimeUnit.MICROSECONDS); 在某些时候也没关闭,感觉和httpPost.releaseConnection(); 只是起到同样复用的结果,两个都写更加保障(在某些版本中两个方法只会有其中一个)

    httpclient 4种关闭连接  参考这里面的4种方法  (个人未试过) 第三种方法貌似可以 

    在android4.2中   client.getConnectionManager().closeIdleConnections(0, TimeUnit.MICROSECONDS);

    在httpclient 4.2 种   client.getConnectionManager().closeIdleConnections(0, TimeUnit.MICROSECONDS);

    经测试 ,上面两种调用也无用

    client.getConnectionManager().closeIdleConnections(0, TimeUnit.MICROSECONDS); 
    在上面加上
    httpGet.abort();  
    就再也没有出现该错了


    代码

    1. String result = null;
    2. HttpPost httpPost = new HttpPost(serverUrl);
    3. try {
    4. StringEntity e = new StringEntity(bodyStr,"UTF-8");
    5. httpPost.setEntity(e);
    6. httpPost.setHeader("Content-Type", "text/xml;charset=UTF-8");
    7. HttpResponse response = this.client.execute(httpPost);
    8. if(response.getStatusLine().getStatusCode() == 200) {
    9. result = EntityUtils.toString(response.getEntity(), "utf-8");
    10. }
    11. } catch (Exception var10) {
    12. LogL.e(var10.getMessage());
    13. result = null;
    14. }finally {
    15. httpPost.abort(); //终止
    16. client.getConnectionManager().closeIdleConnections(0, TimeUnit.MICROSECONDS); //再次调用确保回收
    17. }
    18. return result;


    终极方法

    client  = new .... (重新实例化client)



  • 相关阅读:
    轨迹预测-运动递归函数
    Mandelbrot集合及其渲染
    如何检测一个圆在多个圆内?
    【转】三十分钟掌握STL
    【转】如何理解c和c++的复杂类型声明
    有1,2,3一直到n的无序数组,排序
    归并排序
    希尔排序
    快速排序
    冒泡排序
  • 原文地址:https://www.cnblogs.com/signheart/p/0d383860ed7d2c693f21aea642972238.html
Copyright © 2011-2022 走看看