“如何解决错误”;BasicClient ConnManager的使用无效:请确保在分配另一个连接之前释放该连接";在Android中?

“如何解决错误”;BasicClient ConnManager的使用无效:请确保在分配另一个连接之前释放该连接";在Android中?,android,httprequest,Android,Httprequest,在这里,我试图将一些数据从移动设备发布到服务器。为此,首先我必须登录服务器进行身份验证。然后在我通过POST请求发送数据之后 我已经检查了这个相关的问题 我一个接一个地尝试了所有这些方法 1.实体用户消费(实体) 2.is.close() response.getEntity().consumeContent()//在这种情况下,consumercontent()显示为不推荐使用 post.abort() 这是我在pastebin链接中的详细代码,请检查 下面是程序流程 第一个登录名被调用 在

在这里,我试图将一些数据从移动设备发布到服务器。为此,首先我必须登录服务器进行身份验证。然后在我通过POST请求发送数据之后 我已经检查了这个相关的问题

我一个接一个地尝试了所有这些方法

1.实体用户消费(实体)

2.is.close()

  • response.getEntity().consumeContent()//在这种情况下,consumercontent()显示为不推荐使用

  • post.abort()

  • 这是我在pastebin链接中的详细代码,请检查

    下面是程序流程

  • 第一个登录名被调用

  • 在登录之后和调用post idea方法之前

  • 最后调用该方法

    但logcat向我显示了错误:

    java.lang.IllegalStateException:BasicClient ConnManager的使用无效:连接仍在分配。

    在分配另一个连接之前,请确保释放该连接


  • 当您使用specify any ClientConnectionManager创建DefaultHttpClient时,默认情况下它将创建一个,如果您检查javadoc,则会显示:

    单个连接的连接管理器。此连接管理器一次只维护一个活动连接。即使这个类是线程安全的,它也应该只被一个执行线程使用。 BasicClientConnManager将努力为具有相同路由的后续请求重用连接。但是,如果持久连接的路由与连接请求的路由不匹配,它将关闭现有连接并为给定路由打开它。如果已分配连接,则引发IllegalStateException

    尝试根据您的需要设置自定义配置。请参见一个简单的示例:

    PoolingClientConnectionManager cxMgr = new PoolingClientConnectionManager( SchemeRegistryFactory.createDefault());
    cxMgr.setMaxTotal(100);
    cxMgr.setDefaultMaxPerRoute(20);
    
    这对HttpClient 4.2有效,因为ThreadSafeClientConnManager已不推荐该版本。
    希望这有帮助。

    @Josh Caswell,你能解决我的问题吗?
    PoolingClientConnectionManager cxMgr = new PoolingClientConnectionManager( SchemeRegistryFactory.createDefault());
    cxMgr.setMaxTotal(100);
    cxMgr.setDefaultMaxPerRoute(20);