HttpUtil
public class HttpUtil { private static volatile HttpUtil httpUtil; private Context context; private final OkHttpClient client; private Handler handler = new Handler(Looper.getMainLooper()); public HttpUtil(Context context) { this.context = context; client = new OkHttpClient(); } public static HttpUtil getInstance(Context context){ if(httpUtil == null){ synchronized (HttpUtil.class){ if(httpUtil == null){ httpUtil = new HttpUtil(context); } } } return httpUtil; } public void doGet(String url, HashMap<String,String> params, HashMap<String,String> header, final Class clazz, final OnNetListener onNetListener){ if(!NetWorkUtil.isNetworkAvailable(context)){ Toast.makeText(context,"没有网络,请查看设置",Toast.LENGTH_SHORT).show(); return; } Request.Builder builder = new Request.Builder(); StringBuilder sb = new StringBuilder(); if(params != null){ for (Map.Entry<String,String> entry : params.entrySet()){ sb.append(url); sb.append("?"); sb.append(entry.getKey()); sb.append("="); sb.append(entry.getValue()); } String finalUrl = sb.toString(); builder.url(finalUrl); }else{ builder.url(url); } if(header != null){ //添加请求头 if(params != null && header.size() > 0){ for (Map.Entry<String,String> entry : params.entrySet()){ builder.addHeader(entry.getKey(),entry.getValue()); } } } Request request = builder.build(); client.newCall(request).enqueue(new Callback() { @Override public void onFailure(Call call, final IOException e) { handler.post(new Runnable() { @Override public void run() { onNetListener.onError(e); } }); } @Override public void onResponse(Call call, Response response) throws IOException { String string = response.body().string(); final BaseBean baseBean = (BaseBean) new Gson().fromJson(string,clazz); int code = baseBean.getCode(); if(code == 1){ handler.post(new Runnable() { @Override public void run() { try { onNetListener.onSuccess(baseBean); } catch (IOException e) { e.printStackTrace(); } } }); } } }); } public void doPost(String url, HashMap<String,String> params, final Class clazz, final OnNetListener onNetListener){ if(params!=null && params.size()>0){ FormBody.Builder builder = new FormBody.Builder(); for (Map.Entry<String,String> entry : params.entrySet()){ builder.add(entry.getKey(),entry.getValue()); } FormBody formBody = builder.build(); final Request request = new Request.Builder().url(url).post(formBody).build(); client.newCall(request).enqueue(new Callback() { @Override public void onFailure(Call call, final IOException e) { handler.post(new Runnable() { @Override public void run() { onNetListener.onError(e); } }); } @Override public void onResponse(Call call, Response response) throws IOException { final BaseBean baseBean = (BaseBean) new Gson().fromJson(response.body().string(),clazz); int code = baseBean.getCode(); if(code == 1){ handler.post(new Runnable() { @Override public void run() { try { onNetListener.onSuccess(baseBean); } catch (IOException e) { e.printStackTrace(); } } }); } } }); } } }OnNetListener
public interface OnNetListener { public void onSuccess(BaseBean baseBean) throws IOException; public void onError(IOException e); }NetWorkUtil
public class NetWorkUtil { public static boolean isNetworkAvailable(Context context){ boolean hasWifoCon = false; boolean hasMobileCon = false; ConnectivityManager cm = (ConnectivityManager) context.getSystemService(context.CONNECTIVITY_SERVICE); NetworkInfo[] netInfos = cm.getAllNetworkInfo(); for (NetworkInfo net : netInfos){ String type = net.getTypeName(); if(type.equalsIgnoreCase("WIFI")){ if(!net.isConnected()){ hasWifoCon = true; } } if(type.equalsIgnoreCase("MOBILE")){ if(!net.isConnected()){ hasMobileCon = true; } } } return hasMobileCon || hasWifoCon; } }BaseActivity
public class BaseActivity extends AppCompatActivity { private LinkedList<Activity> list = new LinkedList<>(); protected HttpUtil httpUtil; @Override protected void onCreate(@Nullable Bundle savedInstanceState) { super.onCreate(savedInstanceState); list.add(this); httpUtil = HttpUtil.getInstance(this); } public void finishAll(){ for (Activity ac : list){ if(!ac.isFinishing()){ ac.finish(); } } } }