// 导入依赖
compile 'com.squareup.okhttp3:okhttp:3.4.1'
compile 'com.squareup.okio:okio:1.5.0'
//权限
//工具类
private OKHttpGetListener onOKHttpGetListener;
private MyHandler myHandler = new MyHandler();// /get
public void get(String url){
OkHttpClient client = new OkHttpClient();
//创建请求对象
Request request = new Request.Builder().url(url).build();
//创建Call请求队列
//请求都是放到一个队列里面的
Call call = client.newCall(request);
//开始请求
call.enqueue(new Callback() {
// 失败,成功的方法都是在子线程里面,不能直接更新UI
@Override
public void onFailure(Call call, IOException e) {
Message message = myHandler.obtainMessage();
message.obj = "请求失败";
message.what = 0;
myHandler.sendMessage(message);
}
@Override
public void onResponse(Call call, Response response) throws IOException {
Message message = myHandler.obtainMessage();
String json = response.body().string();
message.obj = json;
message.what = 1;
myHandler.sendMessage(message);
}
});
}
//使用接口回到,将数据返回
public interface OKHttpGetListener{
void error(String error);
void success(String json);
}
//给外部调用的方法
public void setOnOKHttpGetListener(OKHttpGetListener onOKHttpGetListener){
this.onOKHttpGetListener = onOKHttpGetListener;
}
//使用Handler,将数据在主线程返回
class MyHandler extends Handler {
@Override
public void handleMessage(Message msg) {
int w = msg.what;
if (w ==0){
String error = (String) msg.obj;
onOKHttpGetListener.error(error);
}
if (w==1){
String json = (String) msg.obj;
onOKHttpGetListener.success(json);
}
}
}