okhttp(网络框架)
来源:互联网 发布:ubuntu 国内源 编辑:程序博客网 时间:2024/06/08 13:07
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(); } } }}
阅读全文
0 0
- okhttp网络请求框架
- 网络请求框架OKHttp
- OkHttp网络请求框架
- 网络请求okhttp框架
- 网络框架-retrofit,okhttp
- 网络框架-okhttp
- OkHttp网络请求框架
- okhttp(网络框架)
- 网络请求 框架okhttp
- okhttp,Android网络框架学习之OKHttp
- Android 网络框架OKHttp学习
- Retrofit+okhttp网络框架介绍
- android 网络框架解析--OKHttp
- okhttp网络框架的使用
- Retrofit+okhttp网络框架介绍
- Android网络框架-OkHttp使用
- Android网络框架-OkHttp使用
- Android网络框架OKHttp初解
- Android.mk 文件语法详解
- onActivityResult方法的使用
- json爬取京东评论
- SharePreference的commit与apply的区别
- 【WinterCamp 2013】楼房重建 && 【NOIP2017提高A组模拟10.8】God Knows
- okhttp(网络框架)
- java基础之面向对象
- 虚拟机的安装,管理和快照
- ThinkPHP5地址栏传参不用设置路由
- Python: PS 滤镜--素描
- Android:一个设备安装多个包(生产包,测试包等)
- 20171019—每日一练
- C++重载与多态的区别
- USB Power Delivery Specification(USB-PD)