使用ThreadSafeClientConnManager执行http帖子时抛出ClientProtocolException

时间:2011-10-20 05:13:22

标签: android http

        HttpParams params = new BasicHttpParams();
    ConnManagerParams.setMaxConnectionsPerRoute(params, new ConnPerRouteBean(100));
    ConnManagerParams.setMaxTotalConnections(params, 100);
    HttpProtocolParams.setVersion(params, HttpVersion.HTTP_1_1);
    HttpProtocolParams.setUseExpectContinue(params, false);
    HttpProtocolParams.setContentCharset(params, HTTP.DEFAULT_CONTENT_CHARSET);
    HttpConnectionParams.setConnectionTimeout(params, CONNECTION_TIMEOUT); 
    HttpConnectionParams.setSoTimeout(params, REQUEST_TIMEOUT);

    SchemeRegistry registry = new SchemeRegistry();
    registry.register(new Scheme("http", PlainSocketFactory.getSocketFactory(), PORT));

    ThreadSafeClientConnManager cm = new ThreadSafeClientConnManager(params, registry);
    client = new DefaultHttpClient(cm, params);

    HttpClientParams.setCookiePolicy(client.getParams(), CookiePolicy.BROWSER_COMPATIBILITY);

当我的应用程序等待几秒钟时,由于ClientProtocolException,下一篇文章将失败。 通过wireshark,我发现android也使用以前的tcp套接字来执行帖子,但是该套接字以来自服务器的FIN结束。接下来的几个帖子将成功,因为新的套接字建立。 有没有人知道如何解决问题??

1 个答案:

答案 0 :(得分:1)

我有类似的问题。尝试添加以下行:

System.setProperty("http.keepAlive", "false");

进行连接之前。可能会解决你的问题。