希望对你有帮助!!!package com.loopj.android.http;import android.content.Context;
import android.util.Log;
import com.loopj.android.http.klib.Params;
import com.zhaopin.social.utils.ApiUrl;
import com.zhaopin.social.utils.NetParams;
import java.io.IOException;
import java.io.InputStream;
import java.lang.ref.WeakReference;
import java.security.NoSuchAlgorithmException;
import java.util.HashMap;
import java.util.Iterator;
import java.util.LinkedList;
import java.util.List;
import java.util.Map;
import java.util.Set;
import java.util.WeakHashMap;
import java.util.concurrent.Executors;
import java.util.concurrent.Future;
import java.util.concurrent.ThreadPoolExecutor;
import java.util.zip.GZIPInputStream;
import org.apache.http.Header;
import org.apache.http.HeaderElement;
import org.apache.http.HttpEntity;
import org.apache.http.HttpRequest;
import org.apache.http.HttpRequestInterceptor;
import org.apache.http.HttpResponse;
import org.apache.http.HttpResponseInterceptor;
import org.apache.http.HttpVersion;
import org.apache.http.auth.AuthScope;
import org.apache.http.auth.UsernamePasswordCredentials;
import org.apache.http.client.CookieStore;
import org.apache.http.client.CredentialsProvider;
import org.apache.http.client.HttpClient;
import org.apache.http.client.methods.HttpDelete;
import org.apache.http.client.methods.HttpEntityEnclosingRequestBase;
import org.apache.http.client.methods.HttpGet;
import org.apache.http.client.methods.HttpPost;
import org.apache.http.client.methods.HttpPut;
import org.apache.http.client.methods.HttpUriRequest;
import org.apache.http.conn.ClientConnectionManager;
import org.apache.http.conn.params.ConnManagerParams;
import org.apache.http.conn.params.ConnPerRouteBean;
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.entity.HttpEntityWrapper;
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;
import org.apache.http.protocol.BasicHttpContext;
import org.apache.http.protocol.HttpContext;
import org.apache.http.protocol.SyncBasicHttpContext;public class AsyncHttpClient
{
private static final int DEFAULT_MAX_CONNECTIONS = 5;
private static final int DEFAULT_MAX_RETRIES = 5;
private static final int DEFAULT_SOCKET_BUFFER_SIZE = 8192;
private static final int DEFAULT_SOCKET_TIMEOUT = 30000;
private static final String ENCODING_GZIP = "gzip";
private static final String HEADER_ACCEPT_ENCODING = "Accept-Encoding";
private static Context activity;
private static int maxConnections = 5;
private static int socketTimeout = 30000;
private final Map<String, String> clientHeaderMap;
private final DefaultHttpClient httpClient;
private final HttpContext httpContext;
private final Map<Context, List<WeakReference<Future<?>>>> requestMap;
private ThreadPoolExecutor threadPool; public AsyncHttpClient(Context paramContext)
{
activity = paramContext;
BasicHttpParams localBasicHttpParams = new BasicHttpParams();
ConnManagerParams.setTimeout(localBasicHttpParams, socketTimeout);
ConnManagerParams.setMaxConnectionsPerRoute(localBasicHttpParams, new ConnPerRouteBean(maxConnections));
ConnManagerParams.setMaxTotalConnections(localBasicHttpParams, 5);
HttpConnectionParams.setSoTimeout(localBasicHttpParams, socketTimeout);
HttpConnectionParams.setConnectionTimeout(localBasicHttpParams, socketTimeout);
HttpConnectionParams.setTcpNoDelay(localBasicHttpParams, true);
HttpConnectionParams.setSocketBufferSize(localBasicHttpParams, 8192);
HttpProtocolParams.setVersion(localBasicHttpParams, HttpVersion.HTTP_1_1);
HttpProtocolParams.setUserAgent(localBasicHttpParams, "kooxiv");
SchemeRegistry localSchemeRegistry = new SchemeRegistry();
localSchemeRegistry.register(new Scheme("http", PlainSocketFactory.getSocketFactory(), 80));
localSchemeRegistry.register(new Scheme("https", SSLSocketFactory.getSocketFactory(), 443));
ThreadSafeClientConnManager localThreadSafeClientConnManager = new ThreadSafeClientConnManager(localBasicHttpParams, localSchemeRegistry);
this.httpContext = new SyncBasicHttpContext(new BasicHttpContext());
this.httpClient = new DefaultHttpClient(localThreadSafeClientConnManager, localBasicHttpParams);
this.httpClient.addRequestInterceptor(new HttpRequestInterceptor()
{
public void process(HttpRequest paramAnonymousHttpRequest, HttpContext paramAnonymousHttpContext)
{
if (!paramAnonymousHttpRequest.containsHeader("Accept-Encoding"))
paramAnonymousHttpRequest.addHeader("Accept-Encoding", "gzip");
Iterator localIterator = AsyncHttpClient.this.clientHeaderMap.keySet().iterator();
while (true)
{
if (!localIterator.hasNext())
return;
String str = (String)localIterator.next();
paramAnonymousHttpRequest.addHeader(str, (String)AsyncHttpClient.this.clientHeaderMap.get(str));
}
}
});
this.httpClient.addResponseInterceptor(new HttpResponseInterceptor()
{
public void process(HttpResponse paramAnonymousHttpResponse, HttpContext paramAnonymousHttpContext)
{
HttpEntity localHttpEntity = paramAnonymousHttpResponse.getEntity();
if (localHttpEntity == null);
label93:
while (true)
{
return;
Header localHeader = localHttpEntity.getContentEncoding();
if (localHeader != null)
{
HeaderElement[] arrayOfHeaderElement = localHeader.getElements();
int i = arrayOfHeaderElement.length;
for (int j = 0; ; j++)
{
if (j >= i)
break label93;
if (arrayOfHeaderElement[j].getName().equalsIgnoreCase("gzip"))
{
import android.util.Log;
import com.loopj.android.http.klib.Params;
import com.zhaopin.social.utils.ApiUrl;
import com.zhaopin.social.utils.NetParams;
import java.io.IOException;
import java.io.InputStream;
import java.lang.ref.WeakReference;
import java.security.NoSuchAlgorithmException;
import java.util.HashMap;
import java.util.Iterator;
import java.util.LinkedList;
import java.util.List;
import java.util.Map;
import java.util.Set;
import java.util.WeakHashMap;
import java.util.concurrent.Executors;
import java.util.concurrent.Future;
import java.util.concurrent.ThreadPoolExecutor;
import java.util.zip.GZIPInputStream;
import org.apache.http.Header;
import org.apache.http.HeaderElement;
import org.apache.http.HttpEntity;
import org.apache.http.HttpRequest;
import org.apache.http.HttpRequestInterceptor;
import org.apache.http.HttpResponse;
import org.apache.http.HttpResponseInterceptor;
import org.apache.http.HttpVersion;
import org.apache.http.auth.AuthScope;
import org.apache.http.auth.UsernamePasswordCredentials;
import org.apache.http.client.CookieStore;
import org.apache.http.client.CredentialsProvider;
import org.apache.http.client.HttpClient;
import org.apache.http.client.methods.HttpDelete;
import org.apache.http.client.methods.HttpEntityEnclosingRequestBase;
import org.apache.http.client.methods.HttpGet;
import org.apache.http.client.methods.HttpPost;
import org.apache.http.client.methods.HttpPut;
import org.apache.http.client.methods.HttpUriRequest;
import org.apache.http.conn.ClientConnectionManager;
import org.apache.http.conn.params.ConnManagerParams;
import org.apache.http.conn.params.ConnPerRouteBean;
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.entity.HttpEntityWrapper;
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;
import org.apache.http.protocol.BasicHttpContext;
import org.apache.http.protocol.HttpContext;
import org.apache.http.protocol.SyncBasicHttpContext;public class AsyncHttpClient
{
private static final int DEFAULT_MAX_CONNECTIONS = 5;
private static final int DEFAULT_MAX_RETRIES = 5;
private static final int DEFAULT_SOCKET_BUFFER_SIZE = 8192;
private static final int DEFAULT_SOCKET_TIMEOUT = 30000;
private static final String ENCODING_GZIP = "gzip";
private static final String HEADER_ACCEPT_ENCODING = "Accept-Encoding";
private static Context activity;
private static int maxConnections = 5;
private static int socketTimeout = 30000;
private final Map<String, String> clientHeaderMap;
private final DefaultHttpClient httpClient;
private final HttpContext httpContext;
private final Map<Context, List<WeakReference<Future<?>>>> requestMap;
private ThreadPoolExecutor threadPool; public AsyncHttpClient(Context paramContext)
{
activity = paramContext;
BasicHttpParams localBasicHttpParams = new BasicHttpParams();
ConnManagerParams.setTimeout(localBasicHttpParams, socketTimeout);
ConnManagerParams.setMaxConnectionsPerRoute(localBasicHttpParams, new ConnPerRouteBean(maxConnections));
ConnManagerParams.setMaxTotalConnections(localBasicHttpParams, 5);
HttpConnectionParams.setSoTimeout(localBasicHttpParams, socketTimeout);
HttpConnectionParams.setConnectionTimeout(localBasicHttpParams, socketTimeout);
HttpConnectionParams.setTcpNoDelay(localBasicHttpParams, true);
HttpConnectionParams.setSocketBufferSize(localBasicHttpParams, 8192);
HttpProtocolParams.setVersion(localBasicHttpParams, HttpVersion.HTTP_1_1);
HttpProtocolParams.setUserAgent(localBasicHttpParams, "kooxiv");
SchemeRegistry localSchemeRegistry = new SchemeRegistry();
localSchemeRegistry.register(new Scheme("http", PlainSocketFactory.getSocketFactory(), 80));
localSchemeRegistry.register(new Scheme("https", SSLSocketFactory.getSocketFactory(), 443));
ThreadSafeClientConnManager localThreadSafeClientConnManager = new ThreadSafeClientConnManager(localBasicHttpParams, localSchemeRegistry);
this.httpContext = new SyncBasicHttpContext(new BasicHttpContext());
this.httpClient = new DefaultHttpClient(localThreadSafeClientConnManager, localBasicHttpParams);
this.httpClient.addRequestInterceptor(new HttpRequestInterceptor()
{
public void process(HttpRequest paramAnonymousHttpRequest, HttpContext paramAnonymousHttpContext)
{
if (!paramAnonymousHttpRequest.containsHeader("Accept-Encoding"))
paramAnonymousHttpRequest.addHeader("Accept-Encoding", "gzip");
Iterator localIterator = AsyncHttpClient.this.clientHeaderMap.keySet().iterator();
while (true)
{
if (!localIterator.hasNext())
return;
String str = (String)localIterator.next();
paramAnonymousHttpRequest.addHeader(str, (String)AsyncHttpClient.this.clientHeaderMap.get(str));
}
}
});
this.httpClient.addResponseInterceptor(new HttpResponseInterceptor()
{
public void process(HttpResponse paramAnonymousHttpResponse, HttpContext paramAnonymousHttpContext)
{
HttpEntity localHttpEntity = paramAnonymousHttpResponse.getEntity();
if (localHttpEntity == null);
label93:
while (true)
{
return;
Header localHeader = localHttpEntity.getContentEncoding();
if (localHeader != null)
{
HeaderElement[] arrayOfHeaderElement = localHeader.getElements();
int i = arrayOfHeaderElement.length;
for (int j = 0; ; j++)
{
if (j >= i)
break label93;
if (arrayOfHeaderElement[j].getName().equalsIgnoreCase("gzip"))
{
break;
}
}
}
}
}
});
this.httpClient.setHttpRequestRetryHandler(new RetryHandler(5));
this.threadPool = ((ThreadPoolExecutor)Executors.newCachedThreadPool());
this.requestMap = new WeakHashMap();
this.clientHeaderMap = new HashMap();
} private HttpEntityEnclosingRequestBase addEntityToRequestBase(HttpEntityEnclosingRequestBase paramHttpEntityEnclosingRequestBase, HttpEntity paramHttpEntity)
{
if (paramHttpEntity != null)
paramHttpEntityEnclosingRequestBase.setEntity(paramHttpEntity);
return paramHttpEntityEnclosingRequestBase;
} private HttpEntity paramsToEntity(Params paramParams)
{
HttpEntity localHttpEntity = null;
if (paramParams != null)
localHttpEntity = paramParams.getEntity();
return localHttpEntity;
} public void addHeader(String paramString1, String paramString2)
{
this.clientHeaderMap.put(paramString1, paramString2);
} public void cancelRequests(Context paramContext, boolean paramBoolean)
{
List localList = (List)this.requestMap.get(paramContext);
Iterator localIterator;
if (localList != null)
localIterator = localList.iterator();
while (true)
{
if (!localIterator.hasNext())
{
this.requestMap.remove(paramContext);
return;
}
Future localFuture = (Future)((WeakReference)localIterator.next()).get();
if (localFuture != null)
localFuture.cancel(paramBoolean);
}
} public void delete(Context paramContext, String paramString, AsyncHttpResponseHandler paramAsyncHttpResponseHandler)
{
HttpDelete localHttpDelete = new HttpDelete(paramString);
sendRequest(this.httpClient, this.httpContext, localHttpDelete, null, paramAsyncHttpResponseHandler, paramContext);
} public void delete(Context paramContext, String paramString, Header[] paramArrayOfHeader, AsyncHttpResponseHandler paramAsyncHttpResponseHandler)
{
HttpDelete localHttpDelete = new HttpDelete(paramString);
if (paramArrayOfHeader != null)
localHttpDelete.setHeaders(paramArrayOfHeader);
sendRequest(this.httpClient, this.httpContext, localHttpDelete, null, paramAsyncHttpResponseHandler, paramContext);
} public void delete(String paramString, AsyncHttpResponseHandler paramAsyncHttpResponseHandler)
{
delete(null, paramString, paramAsyncHttpResponseHandler);
} public void get(Context paramContext, String paramString, AsyncHttpResponseHandler paramAsyncHttpResponseHandler)
{
get(paramContext, paramString, null, paramAsyncHttpResponseHandler);
} public void get(Context paramContext, String paramString, Params paramParams, AsyncHttpResponseHandler paramAsyncHttpResponseHandler)
{
sendRequest(this.httpClient, this.httpContext, new HttpGet(getUrlWithQueryString(paramString, paramParams)), null, paramAsyncHttpResponseHandler, paramContext);
} public void get(Context paramContext, String paramString, Header[] paramArrayOfHeader, Params paramParams, AsyncHttpResponseHandler paramAsyncHttpResponseHandler)
{
HttpGet localHttpGet = new HttpGet(getUrlWithQueryString(paramString, paramParams));
if (paramArrayOfHeader != null)
localHttpGet.setHeaders(paramArrayOfHeader);
sendRequest(this.httpClient, this.httpContext, localHttpGet, null, paramAsyncHttpResponseHandler, paramContext);
} public void get(String paramString, AsyncHttpResponseHandler paramAsyncHttpResponseHandler)
{
get(null, paramString, null, paramAsyncHttpResponseHandler);
} public void get(String paramString, Params paramParams, AsyncHttpResponseHandler paramAsyncHttpResponseHandler)
{
get(null, paramString, paramParams, paramAsyncHttpResponseHandler);
} public HttpClient getHttpClient()
{
return this.httpClient;
} public HttpContext getHttpContext()
{
return this.httpContext;
} public String getUrlWithQueryString(String paramString, Params paramParams)
{
String str1;
if (paramParams != null)
{
String str3 = paramParams.getParamString();
str1 = new StringBuilder(String.valueOf(paramString)).append("?").append(str3).toString() + "&" + NetParams.getNetParams(activity);
}
try
{
while (true)
{
str1 = str1.replaceAll("\\+", "%20");
String str2 = str1.replace(ApiUrl.HOST, "").toLowerCase();
str1 = str1 + "&e=" + NetParams.getMD5(new StringBuilder(String.valueOf(str2)).append(NetParams.getSN()).toString());
Log.i("aftermd5", str1);
return str1;
str1 = paramString + "?" + NetParams.getNetParams(activity);
}
}
catch (NoSuchAlgorithmException localNoSuchAlgorithmException)
{
while (true)
localNoSuchAlgorithmException.printStackTrace();
}
} public void post(Context paramContext, String paramString, Params paramParams, AsyncHttpResponseHandler paramAsyncHttpResponseHandler)
{
post(paramContext, paramString, paramsToEntity(paramParams), null, paramAsyncHttpResponseHandler);
} public void post(Context paramContext, String paramString1, HttpEntity paramHttpEntity, String paramString2, AsyncHttpResponseHandler paramAsyncHttpResponseHandler)
{
sendRequest(this.httpClient, this.httpContext, addEntityToRequestBase(new HttpPost(paramString1), paramHttpEntity), paramString2, paramAsyncHttpResponseHandler, paramContext);
} public void post(Context paramContext, String paramString1, Header[] paramArrayOfHeader, Params paramParams, String paramString2, AsyncHttpResponseHandler paramAsyncHttpResponseHandler)
{
HttpPost localHttpPost = new HttpPost(paramString1);
if (paramParams != null)
localHttpPost.setEntity(paramsToEntity(paramParams));
if (paramArrayOfHeader != null)
localHttpPost.setHeaders(paramArrayOfHeader);
sendRequest(this.httpClient, this.httpContext, localHttpPost, paramString2, paramAsyncHttpResponseHandler, paramContext);
} public void post(Context paramContext, String paramString1, Header[] paramArrayOfHeader, HttpEntity paramHttpEntity, String paramString2, AsyncHttpResponseHandler paramAsyncHttpResponseHandler)
{
HttpEntityEnclosingRequestBase localHttpEntityEnclosingRequestBase = addEntityToRequestBase(new HttpPost(paramString1), paramHttpEntity);
if (paramArrayOfHeader != null)
localHttpEntityEnclosingRequestBase.setHeaders(paramArrayOfHeader);
sendRequest(this.httpClient, this.httpContext, localHttpEntityEnclosingRequestBase, paramString2, paramAsyncHttpResponseHandler, paramContext);
} public void post(String paramString, AsyncHttpResponseHandler paramAsyncHttpResponseHandler)
{
post(null, paramString, null, paramAsyncHttpResponseHandler);
} public void post(String paramString, Params paramParams, AsyncHttpResponseHandler paramAsyncHttpResponseHandler)
{
post(null, paramString, paramParams, paramAsyncHttpResponseHandler);
} public void put(Context paramContext, String paramString, Params paramParams, AsyncHttpResponseHandler paramAsyncHttpResponseHandler)
{
put(paramContext, paramString, paramsToEntity(paramParams), null, paramAsyncHttpResponseHandler);
} public void put(Context paramContext, String paramString1, HttpEntity paramHttpEntity, String paramString2, AsyncHttpResponseHandler paramAsyncHttpResponseHandler)
{
sendRequest(this.httpClient, this.httpContext, addEntityToRequestBase(new HttpPut(paramString1), paramHttpEntity), paramString2, paramAsyncHttpResponseHandler, paramContext);
} public void put(Context paramContext, String paramString1, Header[] paramArrayOfHeader, HttpEntity paramHttpEntity, String paramString2, AsyncHttpResponseHandler paramAsyncHttpResponseHandler)
{
HttpEntityEnclosingRequestBase localHttpEntityEnclosingRequestBase = addEntityToRequestBase(new HttpPut(paramString1), paramHttpEntity);
if (paramArrayOfHeader != null)
localHttpEntityEnclosingRequestBase.setHeaders(paramArrayOfHeader);
sendRequest(this.httpClient, this.httpContext, localHttpEntityEnclosingRequestBase, paramString2, paramAsyncHttpResponseHandler, paramContext);
} public void put(String paramString, AsyncHttpResponseHandler paramAsyncHttpResponseHandler)
{
put(null, paramString, null, paramAsyncHttpResponseHandler);
} public void put(String paramString, Params paramParams, AsyncHttpResponseHandler paramAsyncHttpResponseHandler)
{
put(null, paramString, paramParams, paramAsyncHttpResponseHandler);
} protected void sendRequest(DefaultHttpClient paramDefaultHttpClient, HttpContext paramHttpContext, HttpUriRequest paramHttpUriRequest, String paramString, AsyncHttpResponseHandler paramAsyncHttpResponseHandler, Context paramContext)
{
if (paramString != null)
paramHttpUriRequest.addHeader("Content-Type", paramString);
Future localFuture = this.threadPool.submit(new AsyncHttpRequest(paramDefaultHttpClient, paramHttpContext, paramHttpUriRequest, paramAsyncHttpResponseHandler));
if (paramContext != null)
{
Object localObject = (List)this.requestMap.get(paramContext);
if (localObject == null)
{
localObject = new LinkedList();
this.requestMap.put(paramContext, localObject);
}
((List)localObject).add(new WeakReference(localFuture));
}
}
public void process(HttpRequest paramAnonymousHttpRequest, HttpContext paramAnonymousHttpContext)
{
if (!paramAnonymousHttpRequest.containsHeader("Accept-Encoding"))
paramAnonymousHttpRequest.addHeader("Accept-Encoding", "gzip");
Iterator localIterator = AsyncHttpClient.this.clientHeaderMap.keySet().iterator();
while (true)
{
if (!localIterator.hasNext())
return;
String str = (String)localIterator.next();
paramAnonymousHttpRequest.addHeader(str, (String)AsyncHttpClient.this.clientHeaderMap.get(str));
}
}
});
client.setTimeout(ApplicationConstant.httpTimeOut);
PersistentCookieStore myCookieStore = new PersistentCookieStore(FuniCloudApplication.context);
client.setCookieStore(myCookieStore);