OKhttp CallBackパッケージ
8042 ワード
/**
* Created by alibaba wb-yl349288 on 2017/11/29.
* OkHttp callBack
*
*/
public abstract class OKHttpCallBack<T> extends Callback<T> {
@Override
public void onError(Call call, Exception e) {
if(e instanceof TimeoutException){
ToastUtil.showToast(" ~");
}else{
ToastUtil.showToast(" !"+e.getMessage().toString());
}
}
@Override
public T parseNetworkResponse(Response response) throws Exception {
Class <T> entityClass = (Class <T> ) ((ParameterizedType) getClass().getGenericSuperclass()).getActualTypeArguments()[0];
String body;
if (Build.VERSION.SDK_INT >= 24) {
Reader reader = response.body().charStream();
body = readerToString(reader);
} else {
body = response.body().string();
}
LogUtils.e(body);
if (!TextUtils.isEmpty(body)) {
BaseNoBean bean = JsonUtil.parseJsonToBean(body, BaseNoBean.class);
if (bean != null) {
try {
// return JsonUtil.parseJsonToBean(body,entityClass);
return JSON.parseObject(body, entityClass);
} catch (Exception e) {
Log.d("OKHTTP_ERROR", "onResponse: "+e.getMessage());
if (bean.result instanceof String && TextUtils.isEmpty((CharSequence) bean.result)) {
//Object ""
// ToastUtil.showToast(" ");
return null;
}
}
} else {
//BaseBean null
ToastUtil.showToast(" ");
return null;
}
} else {
//body
ToastUtil.showToast(" ");
return null;
}
return JSON.parseObject(body,entityClass);
}
public String readerToString(Reader reader) {
BufferedReader r = new BufferedReader(reader);
StringBuilder b = new StringBuilder();
String line;
try {
while ((line = r.readLine()) != null) {
b.append(line);
// b.append("\r
");
}
} catch (IOException e) {
e.printStackTrace();
}
return new String(b);
}
}
public class BaseNoBean { /** * code : 200 * message : success * result : */ public int code; public String message; public Object result; }