Project: DeliciousDroid
/*
 * DeliciousDroid - http://code.google.com/p/DeliciousDroid/ 
 * 
 * Copyright (C) 2010 Matt Schmidt 
 * 
 * DeliciousDroid is free software; you can redistribute it and/or modify 
 * it under the terms of the GNU General Public License as published 
 * by the Free Software Foundation; either version 3 of the License, 
 * or (at your option) any later version. 
 * 
 * DeliciousDroid is distributed in the hope that it will be useful, but 
 * WITHOUT ANY WARRANTY; without even the implied warranty of 
 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU 
 * General Public License for more details. 
 * 
 * You should have received a copy of the GNU General Public License 
 * along with DeliciousDroid; if not, write to the Free Software 
 * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 
 * USA 
 */
 
package com.deliciousdroid.client; 
 
import org.apache.http.HttpVersion; 
import org.apache.http.client.HttpClient; 
import org.apache.http.conn.ClientConnectionManager; 
import org.apache.http.conn.params.ConnManagerParams; 
import org.apache.http.conn.scheme.PlainSocketFactory; 
import org.apache.http.conn.scheme.Scheme; 
import org.apache.http.conn.scheme.SchemeRegistry; 
import org.apache.http.conn.ssl.SSLSocketFactory; 
import org.apache.http.impl.client.DefaultHttpClient; 
import org.apache.http.impl.conn.tsccm.ThreadSafeClientConnManager; 
import org.apache.http.params.BasicHttpParams; 
import org.apache.http.params.HttpConnectionParams; 
import org.apache.http.params.HttpParams; 
import org.apache.http.params.HttpProtocolParams; 
 
public class HttpClientFactory { 
  
 public static final int REGISTRATION_TIMEOUT = 30 * 1000// ms 
  
 public static HttpClient getThreadSafeClient() { 
      
     HttpParams params = new BasicHttpParams(); 
     ConnManagerParams.setMaxTotalConnections(params, 100); 
     HttpProtocolParams.setVersion(params, HttpVersion.HTTP_1_1); 
      
        HttpConnectionParams.setConnectionTimeout(params, REGISTRATION_TIMEOUT); 
        HttpConnectionParams.setSoTimeout(params, REGISTRATION_TIMEOUT); 
        ConnManagerParams.setTimeout(params, REGISTRATION_TIMEOUT); 
         
        SchemeRegistry schemeRegistry = new SchemeRegistry(); 
        schemeRegistry.register(new Scheme("http", PlainSocketFactory.getSocketFactory(), 80)); 
        schemeRegistry.register(new Scheme("https", SSLSocketFactory.getSocketFactory(), 443)); 
         
        ClientConnectionManager mgr = new ThreadSafeClientConnManager(params, schemeRegistry); 
        HttpClient client = new DefaultHttpClient(mgr, params); 
 
     return client; 
 }  
}