package org.aisen.weibo.sina.sinasdk.http;
import android.text.TextUtils;
import com.squareup.okhttp.OkHttpClient;
import org.aisen.android.common.context.GlobalContext;
import org.aisen.android.network.http.DefHttpUtility;
import org.aisen.android.network.task.TaskException;
import org.aisen.weibo.sina.service.OfflineService;
import org.aisen.weibo.sina.sinasdk.bean.BaseSinaBean;
import java.security.cert.CertificateException;
import java.security.cert.X509Certificate;
import java.util.concurrent.TimeUnit;
import javax.net.ssl.SSLContext;
import javax.net.ssl.TrustManager;
import javax.net.ssl.X509TrustManager;
public class HttpsUtility extends DefHttpUtility {
private static OkHttpClient mOKHttpClient;
public OkHttpClient getOkHttpClient() {
if (mOKHttpClient == null) {
try {
mOKHttpClient = new OkHttpClient();
mOKHttpClient.setConnectTimeout(GlobalContext.CONN_TIMEOUT, TimeUnit.MILLISECONDS);
mOKHttpClient.setReadTimeout(GlobalContext.READ_TIMEOUT, TimeUnit.MILLISECONDS);
TrustManager tm = new X509TrustManager() {
public void checkClientTrusted(X509Certificate[] chain,
String authType) throws CertificateException {
}
public void checkServerTrusted(X509Certificate[] chain,
String authType) throws CertificateException {
}
public X509Certificate[] getAcceptedIssuers() {
return null;
}
};
SSLContext sslContext = SSLContext.getInstance("TLS");
sslContext.init(null, new TrustManager[] { tm }, null);
mOKHttpClient.setSslSocketFactory(sslContext.getSocketFactory());
} catch (Throwable e) {
e.printStackTrace();
}
}
return mOKHttpClient;
}
@Override
protected <T> T parseResponse(String resultStr, Class<T> responseCls) throws TaskException {
T result = super.parseResponse(resultStr, responseCls);
if (result instanceof OfflineService.OfflineLength) {
OfflineService.OfflineLength iLength = (OfflineService.OfflineLength) result;
iLength.setLength(resultStr.length());
}
if (result instanceof BaseSinaBean) {
BaseSinaBean sinaBean = (BaseSinaBean) result;
if (sinaBean.getError_code() > 0 && !TextUtils.isEmpty(sinaBean.getError())) {
throw new TaskException(String.valueOf(sinaBean.getError_code()), sinaBean.getError());
}
}
return result;
}
}