AutorÃa | Ultima modificación | Ver Log |
package com.cesams.twogetskills.library;import android.util.Log;import com.cesams.twogetskills.Constants;import java.io.File;import java.io.IOException;import java.security.SecureRandom;import java.security.cert.CertificateException;import java.security.cert.X509Certificate;import javax.net.ssl.HostnameVerifier;import javax.net.ssl.SSLContext;import javax.net.ssl.SSLSession;import javax.net.ssl.SSLSocketFactory;import javax.net.ssl.TrustManager;import javax.net.ssl.X509TrustManager;import okhttp3.Cache;import okhttp3.Interceptor;import okhttp3.OkHttpClient;import okhttp3.Request;import okhttp3.Response;import okhttp3.logging.HttpLoggingInterceptor;public class Http {public final static int CACHE_SIZE = 100 * 1024 * 1024; // 100MBprivate final static String SSL = "SSL";private File mCacheDir;private String mDeviceUuid;private String mSecret;private int mCreated;private int mRand;private boolean mUsingHeaderInterceptor;public Http(File cacheDir){mDeviceUuid = "";mSecret = "";mCreated = 0;mRand = 0;mCacheDir = cacheDir;}public Http(File cacheDir, String deviceUuid, String secret, int created, int rand){mDeviceUuid = deviceUuid;mSecret = secret;mCreated = created;mRand = rand;mUsingHeaderInterceptor = true;mCacheDir = cacheDir;}public OkHttpClient getHttpClient(boolean usingCache) throws Exception{Interceptor headerInterceptor = null;HttpLoggingInterceptor logging = new HttpLoggingInterceptor();logging.setLevel(HttpLoggingInterceptor.Level.BASIC);if(mUsingHeaderInterceptor) {headerInterceptor = new Interceptor() {@Overridepublic Response intercept(Chain chain) throws IOException {Request newRequest = chain.request().newBuilder().addHeader(Constants.HTTP_HEADER_ACCEPT, Constants.HTTP_HEADER_ACCEPT_VALUE).addHeader(Constants.HTTP_HEADER_SECURITY_TOKEN, mDeviceUuid).addHeader(Constants.HTTP_HEADER_SECURITY_SECRET, mSecret).addHeader(Constants.HTTP_HEADER_SECURITY_CREATED, String.valueOf(mCreated)).addHeader(Constants.HTTP_HEADER_SECURITY_RAND, String.valueOf(mRand)).build();return chain.proceed(newRequest);}};}TrustManager [] trustAllCerts = new TrustManager [] { trustManager () };SSLContext sslContext = SSLContext.getInstance (SSL);sslContext.init (null, trustAllCerts, new SecureRandom ());SSLSocketFactory sslSocketFactory = sslContext.getSocketFactory ();OkHttpClient.Builder builder = new OkHttpClient.Builder ();if(usingCache) {Log.d("GetHttpClient", "usingCache = true");builder.cache(new Cache(mCacheDir, CACHE_SIZE));}builder.addInterceptor(logging);if(headerInterceptor != null) {builder.addInterceptor(headerInterceptor);}builder.sslSocketFactory (sslSocketFactory, (X509TrustManager)trustAllCerts [0]);builder.hostnameVerifier (hostnameVerifier ());return builder.build ();}private static TrustManager trustManager () {return new X509TrustManager () {@Overridepublic void checkClientTrusted (X509Certificate [] chain, String authType) throws CertificateException { }@Overridepublic void checkServerTrusted (X509Certificate[] chain, String authType) throws CertificateException { }@Overridepublic X509Certificate [] getAcceptedIssuers () {return new X509Certificate [] { };}};}private static HostnameVerifier hostnameVerifier () {return new HostnameVerifier () {@Overridepublic boolean verify (String hostname, SSLSession session) {return true;}};}}