okhttp的简单使用

什么是okhttp呢

一个处理网络请求的开源项目,是安卓端最火热的轻量级框架

他的优点有:

HTTP/2 支持允许所有访问同一主机的请求共享一个socket

·利用连接池减少请求延迟(如果HTTP/2不可用)

·支持GZIP压缩

·响应缓存减少重复请求

-----------------------------------------------------------------

最低版本要求:

Android 2.3

Java1.7

------------------------------------------------------------------------

okhttp的理解并不难

怎么使用呢  一边使用一边理解吧


1导入依赖

ok的依赖

implementation 'com.squareup.okhttp3:okhttp:3.10.0'

   //日志拦截器依赖

 implementation 'com.squareup.okhttp3:logging-interceptor:3.12.0'


---------------------------------------------------------------------------------------------------------


理解

一个人开始写信  

创建邮箱  

写完之后装进邮箱  

准备配送  

开始配送  

配送成功和失败  

成功则切换线程相当于打开信封  

失败则中间出了问题 

----------------------------------------------

public class Nation {

    private static Nation nation;

    public OkHttpClient okHttpClients;

    public Handler handler=  new Handler();

    private Nation() {

        //开始写信

        okHttpClients = new OkHttpClient.Builder()

        .readTimeout(5000,TimeUnit.MILLISECONDS)

        .connectTimeout(5000,TimeUnit.MILLISECONDS)

        .writeTimeout(5000,TimeUnit.MILLISECONDS)

        .build();

    }

//这是单例模式

    public static synchronized Nation getInstance(){

        if (nation==null){

            nation = new Nation();

        }

        return nation;

    }

    public void doGet(String path, final DataCallBack dataCallBack){

        //创建邮箱

        Request.Builder builder = new Request.Builder();

        //把写好的新给邮箱

        builder.url(path);

        //邮箱已收到准备配送

        Request build = builder.build();

        //开始去配送

        Call call = okHttpClients.newCall(build);

        call.enqueue(new Callback() {

            @Override

            public void onFailure(Call call, IOException e) {

                final String message = e.getMessage();

                handler.post(new Runnable() {

                    @Override

                    public void run() {

                        dataCallBack.fainal(message);

                    }

                });

            }

            @Override

            public void onResponse(Call call, Response response) throws IOException {

                ResponseBody body = response.body();

                final String string = body.string();


//记得切换线程

                handler.post(new Runnable() {

                        @Override

                        public void run() {

                            dataCallBack.success(string);

                        }

                    });

            }

        });

    }

//同样使用接口回调让外界拿到

  public interface DataCallBack{

        void success(String data);

        void fainal(String fainal);

    }

}

你理解了吗  请大家过目  非商业用途  如若转发请说明出处  

你可能感兴趣的:(okhttp的简单使用)