package com.dayu.qiheonlinelibrary.net;
|
|
import android.os.Handler;
|
import android.os.Looper;
|
import android.text.TextUtils;
|
|
import com.dayu.qiheonlinelibrary.QHOnLineApplication;
|
import com.dayu.qiheonlinelibrary.utils.ToastUtil;
|
import com.tencent.bugly.crashreport.CrashReport;
|
|
import java.io.IOException;
|
import java.net.ConnectException;
|
import java.util.HashMap;
|
import java.util.Map;
|
|
import okhttp3.Interceptor;
|
import okhttp3.MediaType;
|
import okhttp3.Protocol;
|
import okhttp3.Request;
|
import okhttp3.Response;
|
import okhttp3.ResponseBody;
|
|
/**
|
* Copyright (C), 2023,
|
* Author: zuo
|
* Date: 2023-05-10 10:12
|
* Description:
|
*/
|
public class MyIntercepterApplication implements Interceptor {
|
@Override
|
public Response intercept(Chain chain) throws IOException {
|
Request request = chain.request();
|
try {
|
|
Request myRequest = createRequest(chain.request());
|
if (myRequest != null) {
|
Response response = null;
|
try {
|
response = chain.proceed(myRequest);
|
} catch (ConnectException e) {
|
e.printStackTrace();
|
return getNullResponse(request);
|
}
|
return response;
|
}
|
} catch (Exception e) {
|
e.printStackTrace();
|
CrashReport.postCatchedException(e);
|
}
|
return getNullResponse(request);
|
}
|
|
protected Request createRequest(Request request) {
|
try {
|
Request.Builder builder = request.newBuilder();
|
Map params = new HashMap();
|
if (request.method().equals("GET")) {
|
builder.url(request.url().toString());
|
} else {
|
if (!TextUtils.isEmpty(QHOnLineApplication.getInstance().tokenStr)) {
|
builder.addHeader("Token-Cloud", QHOnLineApplication.getInstance().tokenStr);
|
}
|
}
|
return builder.build();
|
} catch (Exception e) {
|
e.printStackTrace();
|
CrashReport.postCatchedException(e);
|
}
|
return null;
|
|
}
|
|
/**
|
* 网络错误时的异常处理
|
*
|
* @param request
|
* @return
|
*/
|
public Response getNullResponse(Request request) {
|
// 显示Toast提示
|
new Handler(Looper.getMainLooper()).post(new Runnable() {
|
@Override
|
public void run() {
|
ToastUtil.showToastLong(QHOnLineApplication.getInstance().application.getApplicationContext(), "请检查网络!!!");
|
}
|
});
|
int code = 20010;
|
String message = "咦,请检查网络";
|
String errJson = "{\"code\":" + code + ",\"message\":\"" + message + "\"}";
|
Response.Builder builder = new Response.Builder().body(ResponseBody.create(MediaType.parse("application/json"), errJson));
|
builder.request(request);
|
builder.protocol(Protocol.HTTP_1_1);
|
builder.code(200);
|
builder.message(message);
|
return builder.build();
|
}
|
}
|