package com.ywwxhz.lib.handler;
import com.google.gson.reflect.TypeToken;
import com.loopj.android.http.TextHttpResponseHandler;
import com.ywwxhz.lib.kits.Toolkit;
import org.apache.http.Header;
import java.lang.reflect.Type;
/**
* Created by ywwxhz on 2014/9/23.
*/
public abstract class GsonHttpResponseHandler<T> extends TextHttpResponseHandler {
protected Type type;
public GsonHttpResponseHandler(TypeToken<T> typeToken) {
this.type = typeToken.getType();
}
@Override
public final void onSuccess(int statusCode, Header[] headers, String responseString) {
if (statusCode == 200) {
try {
T e = Toolkit.getGson().fromJson(responseString, type);
if (e != null) {
onSuccess(statusCode, headers, responseString, e);
} else {
onFailure(statusCode, headers, responseString, new RuntimeException("response empty"));
}
} catch (Exception e) {
onError(statusCode, headers, responseString, e);
}
}
}
protected abstract void onError(int statusCode, Header[] headers, String responseString, Throwable cause);
public abstract void onSuccess(int statusCode, Header[] headers, String responseString, T object);
@Override
public void onProgress(int bytesWritten, int totalSize) {
}
}