android:okhttp的拦截器:跳转到其他activity

一,代码例子:

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();
    }
}

 

posted @ 2025-06-14 15:22  刘宏缔的架构森林  阅读(17)  评论(0)    收藏  举报