您的位置:首页 > 理论基础 > 计算机网络

OKHttpClient封装

2018-01-28 21:48 405 查看
注:一定要在MainActivity中调用接口回调的方法

public class OKHttpUtils {

//单利模式,获取对象
private static OKHttpUtils okHttpUtils = null;
private MyHandler myhandler = new MyHandler();
private OkLoadListener okLoadListener;

public static OKHttpUtils getInstance() {
if (okHttpUtils == null) {
okHttpUtils = new OKHttpUtils();
}
return okHttpUtils;
}
//get请求
public void OkGet(String url) {
//创建ok对象
OkHttpClient okHttpClient = new OkHttpClient();
//创建请求对象
//路径是单独写了一个类(存放路径:HttpConfig.goods_url)
Request request = new Request.Builder().url(HttpConfig.goods_url).build();
//创建请求队列
Call call = okHttpClient.newCall(request);
//执行,异步请求
call.enqueue(new Callback() {
@Override
public void onFailure(Call call, IOException e) {
Message message = myhandler.obtainMessage();
message.what = 0;
message.obj = e.getMessage();
myhandler.sendMessage(message);
}

@Override
public void onResponse(Call call, Response response) throws IOException {
Message message = myhandler.obtainMessage();
message.what = 1;
message.obj = response.body().string();
myhandler.sendMessage(message);
}
});
}
//处理线程
class MyHandler extends Handler {
@Override
public void handleMessage(Message msg) {
//处理消息
switch (msg.what) {
//失败
case 0:
String error = (String) msg.obj;
okLoadListener.LoadError(error);
break;
//成功
case 1:
String json = (String) msg.obj;
okLoadListener.LoadSuccess(json);
break;
}
}
}

//接口回调
//    《1》定义接口
public interface OkLoadListener {
void LoadSuccess(String json);

void LoadError(String error);

}

//    《2》定义一个方法,共外部调用
public void setLoadListener(OkLoadListener okLoadListener) {
this.okLoadListener = okLoadListener;
}
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: