package com.example.ok02;
import android.os.Handler;
import java.io.IOException;
import java.util.concurrent.TimeUnit;
import okhttp3.Call;
import okhttp3.Callback;
import okhttp3.OkHttpClient;
import okhttp3.Request;
import okhttp3.Response;
public class OkUtils {
//定义变量
private static Handler mhandler;
private final OkHttpClient mclient;
private static OkUtils mokUtils;
//使用构造方法,初始化
private OkUtils(){
mclient=new OkHttpClient.Builder()
.connectTimeout(10, TimeUnit.SECONDS)
.writeTimeout(10,TimeUnit.SECONDS)
.readTimeout(10,TimeUnit.SECONDS)
.build();
mhandler=new Handler();
}
//使用单利模式暴露一个方法
public static OkUtils getInstance(){
if(mokUtils==null){
mokUtils=new OkUtils();
}
return mokUtils;
}
//////////////////////定义接口/////////////////////////
interface Fucn1{
Void onresponce(String result);
}
//处理请求网络成功的方法
private static void onSuccessStringData(final String datas,final Fucn1 callBack){
mhandler.post(new Runnable() {
@Override
public void run() {
if(callBack!=null){
callBack.onresponce(datas);
}
}
});
}
//暴露外界调用的方法
public void asyncJsonStringByURL(final String url, final Fucn1 callBack){
final Request request=new Request.Builder().url(url).build();
mclient.newCall(request).enqueue(new Callback() {
@Override
public void onFailure(Call call, IOException e) {
}
@Override
public void onResponse(Call call, Response response) throws IOException {
onSuccessStringData(response.body().string(),callBack);
}
});
}
}
Mactivity中调用
//使用封装的okhttp
private OkUtils okUtils=OkUtils.getInstance();
//调用接口的方法
okUtils.asyncJsonStringByURL(path, new OkUtils.Fucn1() {
@Override
public Void onresponce(String result) {
//解析数据
Gson gson=new Gson();
ResultDatas resultDatas = gson.fromJson(result, ResultDatas.class);
List<ResultDatas.DataBean> data = resultDatas.getData();
//创建适配器
MyAdaper adaper=new MyAdaper(MainActivity.this,data);
recyclerView.setAdapter(adaper);
//开启布局管理器
recyclerView.setLayoutManager(new LinearLayoutManager(MainActivity.this,LinearLayoutManager.VERTICAL,false));
return null;
}
});