DefaultHttpClient在多个请求上保持活动连接

时间:2012-03-28 08:49:09

标签: java apache-httpclient-4.x

我正在使用DefaultHttpClient通过基本身份验证向同一个URL发出大量请求。

这样的事情:

for (String json: listOfItems)
{
    DefaultHttpClient client = new DefaultHttpClient();

    try
    {       
       client.getCredentialsProvider().setCredentials(
                    new AuthScope(AuthScope.ANY_HOST, AuthScope.ANY_PORT, AuthScope.ANY_REALM, "basic"),
                    new UsernamePasswordCredentials(user, pass));

       HttpPost request = new HttpPost(path);
       setHeaders(request);

       StringEntity se = new StringEntity(json, HTTP.UTF_8);
       se.setContentEncoding(new BasicHeader(HTTP.CONTENT_TYPE, APPLICATION_JSON));
       request.setEntity(se);

       client.execute(request);    
    }       
    finally
    {
       // close/release connection
       client.getConnectionManager().shutdown();            
    }
}

我的问题是在这样做的同时保持连接的最佳方法是什么。 所以我不需要关闭每个帖子请求的连接。

1 个答案:

答案 0 :(得分:2)

您可能需要添加Socket_Timeout参数并实施KeepAlive策略,详情请参阅此处 -

http://hc.apache.org/httpcomponents-client-ga/tutorial/html/connmgmt.html#d5e652