| | |
| | | |
| | | import android.util.Log; |
| | | |
| | | import androidx.annotation.NonNull; |
| | | import androidx.annotation.Nullable; |
| | | |
| | | import com.driver.igotrip.BuildConfig; |
| | | import com.driver.igotrip.R; |
| | | import com.driver.igotrip.base.Const; |
| | |
| | | import java.io.InputStream; |
| | | import java.lang.reflect.Type; |
| | | import java.security.KeyStore; |
| | | import java.security.cert.CertificateException; |
| | | import java.security.cert.CertificateFactory; |
| | | import java.security.cert.X509Certificate; |
| | | import java.util.HashMap; |
| | |
| | | */ |
| | | |
| | | public class HttpManager { |
| | | private final ApiServics service = initBaseData().create(ApiServics.class); |
| | | //只信任指定证书的服务 安全级别高 |
| | | private final ApiServics service = initBaseData(true, false).create(ApiServics.class); |
| | | //信任所有证书的服务 安全级别低 |
| | | private final ApiServics allTrustService = initBaseData(false, true).create(ApiServics.class); |
| | | private Gson gson; |
| | | private final Map<String, String> headerParams = new HashMap<>(); |
| | | |
| | |
| | | } |
| | | } |
| | | |
| | | @Nullable |
| | | private SSLSocketFactory getSSLSocketFactory(X509TrustManager trustManager) { |
| | | try { |
| | | SSLContext tls = SSLContext.getInstance("TLS"); |
| | |
| | | return null; |
| | | } |
| | | |
| | | /** |
| | | * 创建特定证书信任管理器 |
| | | */ |
| | | @Nullable |
| | | private X509TrustManager createTrustManager(int certificateResId) { |
| | | try { |
| | | CertificateFactory certificateFactory = CertificateFactory.getInstance("X.509"); |
| | |
| | | } |
| | | |
| | | /** |
| | | * 创建所有证书信任管理器 |
| | | */ |
| | | @NonNull |
| | | private X509TrustManager createAllTrustManager() { |
| | | return new X509TrustManager() { |
| | | @Override |
| | | public void checkClientTrusted(X509Certificate[] chain, String authType) throws CertificateException { |
| | | |
| | | } |
| | | |
| | | @Override |
| | | public void checkServerTrusted(X509Certificate[] chain, String authType) throws CertificateException { |
| | | |
| | | } |
| | | |
| | | @Override |
| | | public X509Certificate[] getAcceptedIssuers() { |
| | | return new X509Certificate[0]; |
| | | } |
| | | }; |
| | | } |
| | | |
| | | /** |
| | | * 初始化数据 |
| | | * |
| | | */ |
| | | private Retrofit initBaseData() { |
| | | private Retrofit initBaseData(boolean isUseCert, boolean isTrustAll) { |
| | | // 监听请求条件 |
| | | OkHttpClient.Builder builder = new OkHttpClient.Builder(); |
| | | builder.connectTimeout(3, TimeUnit.MINUTES); |
| | | builder.readTimeout(3, TimeUnit.MINUTES); |
| | | builder.writeTimeout(3, TimeUnit.MINUTES); |
| | | if (isUseCert) { |
| | | X509TrustManager trustManager = createTrustManager(R.raw.star_gopost_ci); |
| | | if (trustManager != null) { |
| | | SSLSocketFactory sslSocketFactory = getSSLSocketFactory(trustManager); |
| | | if (sslSocketFactory != null) { |
| | | builder.sslSocketFactory(sslSocketFactory, trustManager); |
| | | } |
| | | } |
| | | } else { |
| | | if (isTrustAll) { |
| | | X509TrustManager trustManager = createAllTrustManager(); |
| | | SSLSocketFactory sslSocketFactory = getSSLSocketFactory(trustManager); |
| | | if (sslSocketFactory != null) { |
| | | builder.sslSocketFactory(sslSocketFactory, trustManager); |
| | | } |
| | | } |
| | | } |
| | | // builder.addInterceptor(new Interceptor() { |
| | |
| | | // public <T extends BaseBean> void post(final String action, Map<String, Object> params, |
| | | public void post(final String action, Map<String, Object> params, |
| | | Observer<ResponseBody> observer) { |
| | | post(action, params) |
| | | post(false, action, params, observer); |
| | | } |
| | | |
| | | /** |
| | | * Post请求 |
| | | * |
| | | * @param isUseAllTrustService 是否使用信任所有证书服务 |
| | | * @param action 请求接口的尾址 |
| | | * @param params 请求参数 |
| | | */ |
| | | // public <T extends BaseBean> void post(final String action, Map<String, Object> params, |
| | | public void post(boolean isUseAllTrustService, final String action, Map<String, Object> params, |
| | | Observer<ResponseBody> observer) { |
| | | post(isUseAllTrustService, action, params) |
| | | .subscribeOn(Schedulers.io()) |
| | | .observeOn(AndroidSchedulers.mainThread()) |
| | | .subscribe(observer); |
| | |
| | | * @param params 请求参数 |
| | | */ |
| | | public Observable<ResponseBody> post(final String action, Map<String, Object> params) { |
| | | return post(false, action, params); |
| | | } |
| | | |
| | | /** |
| | | * Post请求 |
| | | * |
| | | * @param action 请求接口的尾址 |
| | | * @param params 请求参数 |
| | | */ |
| | | public Observable<ResponseBody> post(boolean isUseAllTrustService, final String action, Map<String, Object> params) { |
| | | if (params == null) { |
| | | params = new HashMap<>(); |
| | | } |
| | |
| | | params.put(Const.language, type); // 1 中文 2 英文 3 法文 |
| | | LogUtils.d("post", params.toString()); |
| | | headerParams.put("Authorization", "Bearer " + getToken()); |
| | | return service.postResult(action, headerParams, params); |
| | | return (isUseAllTrustService ? allTrustService : service).postResult(action, headerParams, params); |
| | | } |
| | | |
| | | /** |