You cannot select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

142 lines
3.9 KiB
Java

This file contains ambiguous Unicode characters!

This file contains ambiguous Unicode characters that may be confused with others in your current locale. If your use case is intentional and legitimate, you can safely ignore this warning. Use the Escape button to highlight these characters.

package com.rehome.meetingbook.utils;
/**
* Create By HuangWenFei
* 创建日期2022-11-29 15:30
* 描述:
*/
import android.content.Context;
import android.content.pm.ApplicationInfo;
import android.text.TextUtils;
import android.util.Log;
import com.rehome.meetingbook.R;
import com.yolanda.nohttp.NoHttp;
import com.yolanda.nohttp.download.DownloadQueue;
import com.yolanda.nohttp.rest.Request;
import com.yolanda.nohttp.rest.RequestQueue;
import java.security.KeyStore;
import java.security.SecureRandom;
import java.security.cert.CertificateFactory;
import javax.net.ssl.SSLContext;
import javax.net.ssl.SSLSocketFactory;
import javax.net.ssl.TrustManagerFactory;
/**
* Nohttp工具类
*/
public class NoProgresshttpUtils {
private static NoProgresshttpUtils sUtils;
private RequestQueue mQueue;
/**
* 下载队列.
*/
private static DownloadQueue downloadQueue;
private NoProgresshttpUtils() {
mQueue = NoHttp.newRequestQueue(8);
}
/**
* DCL单例模式 双层锁
*
* @return
*/
public static NoProgresshttpUtils getInstance() {
if (sUtils == null) {
synchronized (NohttpUtils.class) {
if (sUtils == null) {
sUtils = new NoProgresshttpUtils();
}
}
}
return sUtils;
}
/**
* 下载队列.
*/
public static DownloadQueue getDownloadInstance() {
if (downloadQueue == null)
downloadQueue = NoHttp.newDownloadQueue(1);
return downloadQueue;
}
public <T> void add(int what, Request<T> request, HttpListener<T> callback) {
Log.i("app",request.url());
mQueue.add(what, request, new HttpResponseListenerNoProgress<T>(request, callback));
}
/**
* 取消这个sign这个标记的所有请求
*
* @param sign
*/
public void cancelBySign(Object sign) {
mQueue.cancelBySign(sign);
}
/**
* 取消队列中所有请求
*/
public void cancelAll() {
mQueue.cancelAll();
}
/**
* 退出App停止所有请求
*/
public void stopAll() {
mQueue.stop();
}
public static SSLSocketFactory getSSLSocketFactory(Context context){
try {
CertificateFactory certificateFactory = CertificateFactory.getInstance("X.509");
KeyStore keyStore = KeyStore.getInstance(KeyStore.getDefaultType());
keyStore.load(null);
String certificateAlias = Integer.toString(0);
keyStore.setCertificateEntry(certificateAlias, certificateFactory.
generateCertificate(context.getResources().openRawResource(R.raw.ca1)));
SSLContext sslContext = SSLContext.getInstance("TLS");
final TrustManagerFactory trustManagerFactory =
TrustManagerFactory.getInstance(TrustManagerFactory.getDefaultAlgorithm());
trustManagerFactory.init(keyStore);
sslContext.init
(
null,
trustManagerFactory.getTrustManagers(),
new SecureRandom()
);
return sslContext.getSocketFactory();
} catch (Exception ex) {
ex.printStackTrace();
}
return null;
}
public void showLog(String logText,Context context) {
if (isApkInDebug(context)) {
if(TextUtils.isEmpty(logText)){
Log.i("app", "logText is null");
}else{
Log.i("app", logText);
}
}
}
/**
* 判断当前应用是否是debug状态
*/
public static boolean isApkInDebug(Context context) {
try {
ApplicationInfo info = context.getApplicationInfo();
return (info.flags & ApplicationInfo.FLAG_DEBUGGABLE) != 0;
} catch (Exception e) {
return false;
}
}
}