/**
* 首先构建OkHttpClient,<br />
* 1. 方法:直接使用new 关键字创建
* 2. 方法:使用构造着模式,OkHttpClient.Builder.build方法构造。
* 这个类是用来配置和创建HTTP 连接。在大多数的程序中,这个类可以封装成一个单利模式
* 来进行程序网络访问的统一管理。
* 设置 共享的响应缓存、线程池、连接复用
* (要设置这些东西,请使用官方提供的方法,OkHttpClient.Builder来设置缓存目录、缓存大小,
* 配置连接池,
* 配置拦截器,
* )
*然后构建Request请求对象<br />
* request对象只能使用Request.Builder.build来创建对象。
* 最后Call,使用httpClient.newCall(request)来生成一个执行对象。
* 用call对象,调用execute方法,执行网络请求
* */
File file =
new
File(Environment.getDataDirectory().getAbsolutePath()+File.pathSeparator+
"http_cache"
);
final
Cache cache =
new
Cache(file,
20000
);
ConnectionPool pool =
new
ConnectionPool(
10
,
5
, TimeUnit.SECONDS);
OkHttpClient httpClient =
new
OkHttpClient.Builder().addInterceptor(
new
Interceptor() {
@Override
public
Response intercept(Chain chain)
throws
IOException {
Response response = chain.proceed(chain.request());
okhttp3.MediaType mediaType = response.body().contentType();
String content = response.body().string();
return
response.newBuilder()
.body(okhttp3.ResponseBody.create(mediaType, content))
.build();
}
}).connectionPool(pool).cache(cache).build();
Request request =
new
Request.Builder().url(
"https://www.baidu.com"
).build();
Call call = httpClient.newCall(request);
call.enqueue(
new
Callback() {
@Override
public
void
onFailure(Call call, IOException e) {
Log.d(
"--MainActivity--"
,
"onFailure: ---网络访问失败"
);
}
@Override
public
void
onResponse(Call call, Response response)
throws
IOException {
Log.d(
"--MainActivity--"
,
"onResponse: "
+response.body().string());
}
});