package com.dayu.qiheonlinelibrary.net;
|
|
import com.dayu.qiheonlinelibrary.QHOnLineApplication;
|
import com.dayu.qiheonlinelibrary.utils.SharedPreferencesHelper;
|
import com.dayu.qiheonlinelibrary.utils.ToastUtil;
|
import com.tencent.bugly.crashreport.CrashReport;
|
|
|
import java.io.IOException;
|
import java.util.HashMap;
|
import java.util.Map;
|
|
import okhttp3.FormBody;
|
import okhttp3.Interceptor;
|
import okhttp3.MediaType;
|
import okhttp3.Protocol;
|
import okhttp3.Request;
|
import okhttp3.RequestBody;
|
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 = chain.proceed(myRequest);
|
return response;
|
} else {
|
ToastUtil.showToastLong(QHOnLineApplication.qhAloneApplication.application, "请检查网络连接!!");
|
}
|
} 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 {
|
|
RequestBody body = request.body();
|
if (body instanceof FormBody) {
|
FormBody oldFormBody = (FormBody) body;
|
if (oldFormBody != null && oldFormBody.size() > 0) {
|
//处理body
|
}
|
}
|
builder.addHeader("os", "app");
|
builder.addHeader("Authorization", SharedPreferencesHelper.getInstance(QHOnLineApplication.qhAloneApplication.application).get("token", ""));
|
}
|
return builder.build();
|
} catch (Exception e) {
|
e.printStackTrace();
|
CrashReport.postCatchedException(e);
|
}
|
return null;
|
|
}
|
|
/**
|
* 网络错误时的异常处理
|
*
|
* @param request
|
* @return
|
*/
|
public Response getNullResponse(Request request) {
|
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();
|
}
|
}
|