一,代码例子:
package com.example.okdemo1.interceptor;
import android.content.Context;
import android.content.Intent;
import android.os.Handler;
import android.os.Looper;
import android.util.Log;
import android.widget.Toast;
import androidx.annotation.NonNull;
import com.example.okdemo1.MainApplication;
import com.example.okdemo1.activity.PdfActivity;
import com.example.okdemo1.activity.SmarttabActivity;
import com.example.okdemo1.model.BaseEntity;
import com.google.gson.Gson;
import java.io.IOException;
import java.util.Locale;
import okhttp3.Interceptor;
import okhttp3.MediaType;
import okhttp3.Request;
import okhttp3.Response;
public class LogInterceptor implements Interceptor {
private final Handler mainHandler = new Handler(Looper.getMainLooper());
private Context context;
public LogInterceptor(@NonNull Context context) {
this.context = context;
}
@Override
public Response intercept(Chain chain) throws IOException {
Request request = chain.request();
String typeStr = "";
long contentLen = 0;
String reqBody = "";
if (request.body() != null) {
MediaType contentType = request.body().contentType();
typeStr = contentType.toString();
contentLen = request.body().contentLength();
reqBody = request.body().toString();
}
Log.i("TEST", "MyIntercepter.intercept.request.toString -> " + request.toString());
Log.i("TEST", String.format(Locale.getDefault(),
"MyIntercepter.intercept.requestbody -> {contentType : %1$s, contentLength : %2$d, toString : %3$s}",
typeStr,
contentLen,
reqBody));
Response response = chain.proceed(request);
String content = response.body().string();
BaseEntity baseResult = new Gson().fromJson(content, BaseEntity.class);
Log.i("test","status:"+baseResult.getStatus());
Log.i("test","code:"+baseResult.getCode());
int code = baseResult.getCode();
//得到context
if (code == 5) {
Looper.prepare();
Toast.makeText(context, "消息内容:状态正常", Toast.LENGTH_SHORT).show();
Looper.loop();
} else {
Looper.prepare();
Toast.makeText(context, "消息内容:code:"+code+",需要跳转到其他页面", Toast.LENGTH_SHORT).show();
//跳转到pdfactivity
Intent intent = new Intent(context, PdfActivity.class);
intent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
context.startActivity(intent);
Looper.loop();
}
okhttp3.MediaType mediaType = response.body().contentType();
Log.i("TEST", "MyIntercepter.intercept.response.message -> " + response.message());
Log.i("TEST", "MyIntercepter.intercept.response.toString -> " + response.toString());
Log.i("TEST", "MyIntercepter.intercept.response.body -> " + content);
return response.newBuilder().body(okhttp3.ResponseBody.create(content,mediaType)).build();
}
}