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

原创粉丝点击