Can someone take a look at my question, thanks.



 
From: [email protected]
Date: 2015-02-09 17:10
To: httpclient-users
Subject: The two ways to use HttpClient
Hi experts,
 
I am now using httpclient to send http request, approximately 1000 requests per 
seconds. I am using 3.1, and come up with following two ways, I would ask which 
one will gain better performance, perhaps both have its problems(You know, 
connections is closed or released or someting else) I am glad if you point it 
to me, thanks.
 
1. Create a new HttpClient each time before sending request,as:
    private HttpClient newHttpClient() { 
       HttpClient client = new HttpClient(); 
       
client.getHttpConnectionManager().getParams().setConnectionTimeout(TIMEOUT); 
       client.getHttpConnectionManager().getParams().setSoTimeout(TIMEOUT); 
       return client; 
    }
   public String post(String url, String postData, String contentType) throws 
IOException { 
        String encoding = HTTP.UTF_8; 
        StringRequestEntity entity = new StringRequestEntity(postData, 
contentType, encoding); 
        PostMethod pm = new PostMethod(url); 
       pm.setRequestHeader("Connection", "close");  //Make sure the connection 
is closed when releaseConnection is called.
     pm.setRequestEntity(entity); 
try { 
HttpClient client = newHttpClient();  //Create a new HttpClient
client.executeMethod(pm); 
String response = responseBodyAsString(pm);  //consume the response
return response; 
} finally { 
pm.releaseConnection();  //release the connection
} 
}
 
2. use MultiThreadedHttpConnectionManager, as following(The HttpClient is a 
static instance that will be reused by many threads)
 
    private HttpClientUtilV2() { 
MultiThreadedHttpConnectionManager connectionManager = new 
MultiThreadedHttpConnectionManager(); 
HttpConnectionManagerParams params = new HttpConnectionManagerParams(); 
params.setConnectionTimeout(30000); 
params.setSoTimeout(30000); 
params.setMaxTotalConnections(500); 
params.setDefaultMaxConnectionsPerHost(500); 
params.setStaleCheckingEnabled(true); 
connectionManager.setParams(params); 
httpClient = new HttpClient(connectionManager); 
 
}
 
    public String get(String url) throws IOException{ 
GetMethod pm = new GetMethod(url); 
try { 
httpClient.executeMethod(pm); 
String response = responseBodyAsString(pm); 
return response; 
} finally { 
pm.releaseConnection(); 
} 
}
 
 
 
 
 
-Todd

Reply via email to