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);}

原创粉丝点击