上一篇写了很久,后面一直有各种的事情,所以没得写,然后现在闲一点了所以准备接下来写一写东西。接着上一篇retrofit,这篇写一写retrofit+okhttp.
名言
人生意义何为?人生的意义在于:不断的奋斗、进取、超越自己的过程。
接下来还是干正事吧,我们还是来请求今日头条的内容,对我就是和今日头条刚上了。
话不多说效果图一手。
首先我们要用怎么办—》导包
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的文章