package cyning.me.libnerss.network; import android.os.Handler; import android.os.Looper; import android.os.Message; import com.jumige.android.common.utils.LayzLog; import com.squareup.okhttp.Callback; import com.squareup.okhttp.Request; import com.squareup.okhttp.Response; import java.io.IOException; /** * Author: cyning * Date : 2015.04.28 * Time : 下午10:53 * Desc : 类/接口描述 */ public abstract class BaseApiHandler implements Callback{ public abstract void onSuccess(String string); public abstract void onFailure(String url,String string); public abstract void onError(String string); @Override public void onFailure(Request request, IOException e) { sendMessage(FAILURE,new String[]{request.urlString(),e.getMessage()}); } /** * Helper method to create Message instance from handler * * @param responseMessageId constant to identify Handler message * @param responseMessageData object to be passed to message receiver * @return Message instance, should not be null */ protected Message obtainMessage(int responseMessageId, Object responseMessageData) { return Message.obtain(mHandler, responseMessageId, responseMessageData); } protected void sendMessage(int responseMessageId, Object responseMessageData) { Message mMessage = obtainMessage(responseMessageId,responseMessageData); mHandler.sendMessage(mMessage); } @Override public void onResponse(Response response) throws IOException { String string = response.body().string(); LayzLog.i("onResponse >> %s",string); Message mMessage = obtainMessage(SUCCESS, string); mHandler.sendMessage(mMessage); } public static final int SUCCESS = 0; public static final int FAILURE = 1; private Handler mHandler = new Handler(Looper.getMainLooper()){ @Override public void handleMessage(Message msg) { Object[] respon = null; int what = msg.what; if (what == SUCCESS){ String responStr =(String) msg.obj; onSuccess(responStr); }else if (what == FAILURE){ respon =(Object[]) msg.obj; onFailure((String)respon[0],(String)respon[1]); } } }; }