から派生しDefaultHttpClient
て使用するクラスを作成しましたConnectionKeepAliveStrategy
。ここで、実行時に接続を再利用したのか、新しい接続を作成したのかを知りたいですClientConnectionManager
(たとえば、サーバーとの接続がタイムアウトしたため)。
どうすればわかりますか?
public class MyHttpClient extends DefaultHttpClient
{
// some code setting constants
public MyHttpClient()
{
super();
// some code setting http connection params
setKeepAliveStrategy(new ConnectionKeepAliveStrategy()
{
@Override
public long getKeepAliveDuration(final HttpResponse response, final HttpContext context)
{
return KEEP_ALIVE_TIMEOUT * MS_PER_SECOND;
}
});
}
@Override
protected ClientConnectionManager createClientConnectionManager()
{
// some code registering HTTP and HTTPS
return new ThreadSafeClientConnManager(getParams(), registry);
}
// some code for the socketfactory
}
// At some other class:
public class SomeClass
{
private static final HttpClient HTTP_CLIENT = new MyHttpClient();
public void someMethod()
{
/* some code */
HttpGet get = new HttpGet(some url);
HttpResponse getResponse = HTTP_CLIENT.execute(get);
/* more code */
}
}
電話をかけるとHTTP_CLIENT.execute()
、新しい接続が作成されたのClientConnectionManager
か、既存の接続が再利用されたのかを確認できますか?