package com.mopub.mobileads.factories; import org.apache.http.impl.client.DefaultHttpClient; import org.apache.http.params.BasicHttpParams; import org.apache.http.params.HttpConnectionParams; import org.apache.http.params.HttpParams; public class HttpClientFactory { public static final int SOCKET_SIZE = 8192; private static HttpClientFactory instance = new HttpClientFactory(); @Deprecated // for testing public static void setInstance(HttpClientFactory factory) { instance = factory; } public static DefaultHttpClient create(int timeoutMilliseconds) { return instance.internalCreate(timeoutMilliseconds); } public static DefaultHttpClient create() { return instance.internalCreate(0); } protected DefaultHttpClient internalCreate(int timeoutMilliseconds) { HttpParams httpParameters = new BasicHttpParams(); if (timeoutMilliseconds > 0) { // Set timeouts to wait for connection establishment / receiving data. HttpConnectionParams.setConnectionTimeout(httpParameters, timeoutMilliseconds); HttpConnectionParams.setSoTimeout(httpParameters, timeoutMilliseconds); } // Set the buffer size to avoid OutOfMemoryError exceptions on certain HTC devices. // http://stackoverflow.com/questions/5358014/android-httpclient-oom-on-4g-lte-htc-thunderbolt HttpConnectionParams.setSocketBufferSize(httpParameters, SOCKET_SIZE); return new DefaultHttpClient(httpParameters); } }