public class OKHttpUtils {
private Handler handler=new Handler();
public Handler getHandler(){
return handler;
}
//单例
private static OKHttpUtils okHttpUtils=new OKHttpUtils();
private OKHttpUtils(){};
public static OKHttpUtils getInstance(){
return okHttpUtils;
}
private OkHttpClient client;
private void initOkHttpClient(){
//实例出来client对象
if (client==null){
client=new OkHttpClient.Builder().build();
}
}
//使用工具类,发起网络请求
public void doGet(String url, Callback callback){
initOkHttpClient();
Request request=new Request.Builder().url(url).build();
Call call=client.newCall(request);
call.enqueue(callback);
}
}
public abstract class OnUiCallback implements Callback{
private Handler handler=OKHttpUtils.getInstance().getHandler();
public abstract void onFailed(Call call, IOException e);
public abstract void onsuccess(String result)throws IOException;
@Override
public void onFailure(final Call call, final IOException e) {
handler.post(new Runnable() {
@Override
public void run() {
onFailed(call,e);
}
});
}
@Override
public void onResponse(Call call, Response response) throws IOException {
final String result=response.body().string();
handler.post(new Runnable() {
@Override
public void run() {
try {
onsuccess(result);
} catch (IOException e) {
e.printStackTrace();
}
}
});
}
}