본문 바로가기
프로그래밍 놀이터/안드로이드, Java

[android] ThreadSafeClientConnManager 연결된 HttpClient 만들기

by 돼지왕 왕돼지 2012. 12. 10.
반응형



ThreadSafeClientConnManager 연결된 HttpClient 만들기

- 일반적인 ClientConnManger 가 연결된 DeafultHttpClient 를 사용하게 되면, 연결한 Connection 이 마무리 되기 전에 동일한 DefaultHttpClient instance 를 사용하여 connection 을 시도할 경우, IllegalStateException 이 발생하곤 한다.

- 이를 해결하기 위해서는 일반적인 ClientConnManger 대신에 ThreadSafeClientConnManger 를 연결해주면 된다.

public static final int MAX_TOTAL_CONNECTION = 20;

public static final int MAX_CONNECTIONS_PER_ROUTE = 20;

public static final int TIMEOUT_CONNECT = 15000;

public static final int TIMEOUT_READ = 15000;

private HttpClient mHttpClient;


...
 

private void initHttpClient(){

   SchemeRegistry schemeRegistry = new SchemeRegistry();

   schemeRegistry.register(new Scheme( "http", PlainSocketFactory.getSocketFactory(), 80));


   HttpParams params = new BasicHttpParams();

   ConnManagerParams.setMaxTotalConnections(params, MAX_TOTAL_CONNECTION );

   ConnManagerParams.setMaxConnectionsPerRoute( params, new ConnPerRouteBean(MAX_CONNECTIONS_PER_ROUTE) );  

 
  HttpConnectionParams.setConnectionTimeout(params, TIMEOUT_CONNECT);

   HttpConnectionParams.setSoTimeout(params, TIMEOUT_READ);

   HttpConnectionParams.setTcpNoDelay(params, true);


   ThreadSafeClientConnManager cm = new ThreadSafeClientConnManager(connManagerParams, schemeRegistry);

   mHttpClient = new DefaultHttpClient(cm, null);

}




도움이 되셨다면 손가락 꾸욱~ ( 로그인 필요 x )



반응형

댓글