222
来源:互联网 发布:ecshop 2.0数据字典 编辑:程序博客网 时间:2024/06/16 01:47
//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); String code = baseBean.getCode(); if(code.equals("0")){ 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); String code = baseBean.getCode(); if(code.equals("0")){ 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);}
阅读全文
0 0
- 222
- 222
- 222
- 222
- 222
- 222
- 222
- 222
- 222
- 222
- 222
- 222
- 222
- 222
- 222
- 222
- 222
- 222
- 购物车表格样式
- XlistView使用的步骤
- 设计模式_观察者模式(18)
- Python与机器学习之文章研读
- 胡策题
- 222
- 从抗美援朝到图形图像、算法,84 岁老爷爷的跨越性技术之路
- AngluarJS敏感字符设置
- nyoj833取石子(七)
- Tablayout显示导航栏
- 20171015
- 顺序队实现
- 侧拉+xlistview+多条目展示+请求数据+tablayout+viewpager+Imageloder
- 正定矩阵,正交矩阵,对角化,可逆矩阵,奇异矩阵,相似矩阵