封装OKHttp,工具类

来源:互联网 发布:linux 访问smb 编辑:程序博客网 时间:2024/05/18 15:23
public class OkHttp3Util {    private static OkHttpClient okHttpClient = null;    private OkHttp3Util() {    }    public static OkHttpClient getInstance() {        if (okHttpClient == null) {            //加同步安全            synchronized (OkHttp3Util.class) {                if (okHttpClient == null) {                    //okhttp可以缓存数据....指定缓存路径                    File file = new File(Environment.getExternalStorageDirectory(), "cache");                    //指定缓存大小                    int cacheSize = 10 * 1024 * 1024;                    okHttpClient = new OkHttpClient.Builder()//构建器                            .connectTimeout(15, TimeUnit.SECONDS)//连接超时                            .writeTimeout(20, TimeUnit.SECONDS)//写入超时                            .readTimeout(20, TimeUnit.SECONDS)//读取超时                           // .cache(new Cache(file.getAbsoluteFile(),cacheSize))//设置缓存                            .build();                }            }        }        return okHttpClient;    }    /**     * get请求     * 参数1 url     * 参数2 回调Callback     */    public static void doGet(String url, Callback callback) {        //创建OkHttpClient请求对象        OkHttpClient okHttpClient = getInstance();        //创建Request        Request request = new Request.Builder().url(url).build();        //得到Call对象        Call call = okHttpClient.newCall(request);        //执行异步请求        call.enqueue(callback);    }    /**     * post请求     * 参数1 url     * 参数2 Map<String, String> params post请求的时候给服务器传的数据     *      add..("","")     *      add()     */    public static void doPost(String url, Map<String, String> params, Callback callback) {        //创建OkHttpClient请求对象        OkHttpClient okHttpClient = getInstance();        //3.x版本post请求换成FormBody 封装键值对参数        FormBody.Builder builder = new FormBody.Builder();        //遍历集合        for (String key : params.keySet()) {            builder.add(key, params.get(key));        }        //创建Request        Request request = new Request.Builder().url(url).post(builder.build()).build();        Call call = okHttpClient.newCall(request);        call.enqueue(callback);    }}
原创粉丝点击