XiMengJianYu/.svn/pristine/c3/c35539c7a3d412b28c1f057d0a346d37f85e621e.svn-base
2023-04-17 17:58:44 +08:00

95 lines
3.7 KiB
Plaintext
Executable File

package com.cm.utils.net.callback;
import android.os.Handler;
import com.cm.utils.net.response.GsonResponseHandler;
import com.cm.utils.net.response.JsonResponseHandler;
import com.cm.utils.net.response.RawResponseHandler;
import com.cm.utils.net.response.ResponseHandler;
import com.google.gson.Gson;
import org.json.JSONException;
import org.json.JSONObject;
import java.io.IOException;
import okhttp3.Call;
import okhttp3.Callback;
import okhttp3.Response;
/**
* Created by Xuer on 2017/3/8.
*/
public class RequestCallBack implements Callback {
private Handler handler;
private ResponseHandler responseHandler;
public RequestCallBack(ResponseHandler responseHandler) {
handler = new Handler();
this.responseHandler = responseHandler;
}
@Override
public void onFailure(Call call, final IOException e) {
handler.post(new Runnable() {
@Override
public void run() {
responseHandler.onFailure(0, e.toString());
}
});
}
@Override
public void onResponse(Call call, final Response response) throws IOException {
if (response.isSuccessful()) {
final String response_body = response.body().string();
if (responseHandler instanceof JsonResponseHandler) { //json回调
try {
final JSONObject jsonBody = new JSONObject(response_body);
handler.post(new Runnable() {
@Override
public void run() {
((JsonResponseHandler) responseHandler).onSuccess(response.code(), jsonBody);
}
});
} catch (JSONException e) {
// LogUtils.e("onResponse fail parse jsonobject, body=" + response_body);
handler.post(new Runnable() {
@Override
public void run() {
responseHandler.onFailure(response.code(), "fail parse jsonobject, body=" + response_body);
}
});
}
} else if (responseHandler instanceof GsonResponseHandler) { //gson回调
handler.post(new Runnable() {
@Override
public void run() {
try {
Gson gson = new Gson();
((GsonResponseHandler) responseHandler).onSuccess(response.code(),
gson.fromJson(response_body, ((GsonResponseHandler) responseHandler).getType()));
} catch (Exception e) {
// LogUtils.e("onResponse fail parse gson, body=" + response_body, e);
responseHandler.onFailure(response.code(), "fail parse gson, body=" + response_body);
}
}
});
} else if (responseHandler instanceof RawResponseHandler) { //raw字符串回调
handler.post(new Runnable() {
@Override
public void run() {
((RawResponseHandler) responseHandler).onSuccess(response.code(), response_body);
}
});
}
} else {
// LogUtils.e("onResponse fail status=" + response.code());
handler.post(new Runnable() {
@Override
public void run() {
responseHandler.onFailure(0, "fail status=" + response.code());
}
});
}
}
}