Android Retrofit+okHttp+RxJava 第二篇------Retrofit+OkHttp

前言

上一篇写了很久,后面一直有各种的事情,所以没得写,然后现在闲一点了所以准备接下来写一写东西。接着上一篇retrofit,这篇写一写retrofit+okhttp.

名言
人生意义何为?人生的意义在于:不断的奋斗、进取、超越自己的过程。


接下来还是干正事吧,我们还是来请求今日头条的内容,对我就是和今日头条刚上了。
话不多说效果图一手。

Android Retrofit+okHttp+RxJava 第二篇------Retrofit+OkHttp_第1张图片


首先我们要用怎么办—》导包

compile ‘com.squareup.retrofit2:retrofit:2.0.2’
compile ‘com.squareup.retrofit2:converter-gson:2.0.2’
compile ‘com.github.bumptech.glide:glide:3.5.2’

对就是这几个,retrofit2里面是封装了okhttp的所以只需要这个就行了,后面是图片解析框架Glide

这个地方我是直接在上一篇进行修改的上一篇写了retrofit,然后我们这一篇就加上okhttp
我这里把上一篇的连接发出来猛点这里看retrofit请求网络


接下来我们就来看看用retrofit+okhttp怎么请求的

 public void getNet(String key) {
        OkHttpClient.Builder builder = new OkHttpClient().newBuilder()
                //设置超时时间
                .connectTimeout(10, TimeUnit.SECONDS)
                //设置读取超时时间
                .readTimeout(10,TimeUnit.SECONDS)
                //设置写入超时时间
                .writeTimeout(10,TimeUnit.SECONDS);

        OkHttpClient client = builder.build();
        Retrofit retrofit = new Retrofit.Builder()
                .baseUrl(BASE_URL)
                .addConverterFactory(GsonConverterFactory.create())
                .client(client)
                .build();
        NewsService service = retrofit.create(NewsService.class);
        service.getNews_G(key).enqueue(new Callback() {
            @Override
            public void onResponse(Call call, Response response) {
                NewsBean newsBean = response.body();
                if (newsBean.getReason().equals("成功的返回")) {
                    list.addAll(newsBean.getResult().getData());
                    if (list != null){
                        handler.sendEmptyMessage(1);
                    }
                }
            }

            @Override
            public void onFailure(Call call, Throwable t) {

            }
        });
    }

从这里可以看出okhttp可以帮助设置请求的时间这些东西其余也没得什么变化。


okhttp还能做的事情就是他可以设置拦截器

拦截器是什么

简单的举个栗子比如我们把网络比喻成一条高速公路,高速路上过往的车辆就是请求网络,而高速特警就是拦截器,他们把每次的车辆拦截下来,然后进行检查,设置,然后在放行。

拦截器有什么用

一次性对请求的参数和返回的结果进行编码。
一次性对所有的请求和返回值进行修改。
对所有的请求做统一的记录,不需要在每个请求开始或者结束的位置都添加一个日志操作。

拦截器的分类

APP层面的拦截器(Application Interception)
网络请求层面的拦截器(Network Interception)

首先开看看简单的实例化一个Application拦截器

 private Interceptor appInterceptor = new Interceptor() {
        @Override
        public okhttp3.Response intercept(Chain chain) throws IOException {
            Request request = chain.request();
            //请求之前
            Log.e("test","应用拦截器请求之前。。。。。");
            okhttp3.Response response = chain.proceed(request);
            //请求之后
            Log.e("test","应用拦截器请求之后。。。。。");
            return response;
        }
    };

再来一个网络拦截器

 private Interceptor netInterceptor = new Interceptor() {
        @Override
        public okhttp3.Response intercept(Chain chain) throws IOException {
            Request request = chain.request();
            //请求之前
            Log.e("test","网络拦截器请求之前。。。。。");
            okhttp3.Response response = chain.proceed(request);
            //请求之后
            Log.e("test","网络拦截器请求之后。。。。。");
            return response;
        }
    };

怎么用呢?

 OkHttpClient.Builder builder = new OkHttpClient().newBuilder()
                //设置超时时间
                .connectTimeout(10, TimeUnit.SECONDS)
                //设置读取超时时间
                .readTimeout(10,TimeUnit.SECONDS)
                //设置写入超时时间
                .writeTimeout(10,TimeUnit.SECONDS)
                //应用拦截器
                .addInterceptor(appInterceptor)
                //网络拦截器
                .addNetworkInterceptor(netInterceptor);

然后我们来看看拦截器的先后执行的顺序
这里写图片描述

接着就没有什么可以说的了,然后后面我会在写一篇有关于okhttp+retrofit+rxjava的文章

你可能感兴趣的:(工作总结)