http okhttp 去除token 通用方法,未驗(yàn)證




import android.text.TextUtils;

import com.google.gson.Gson;
import com.google.gson.JsonSyntaxException;
import com.txx.app.freshman.FreshmanApp;
import com.txx.app.freshman.commom.utils.MyLog;

import java.io.IOException;
import java.nio.charset.Charset;
import java.util.HashMap;
import java.util.Map;
import java.util.Set;

import okhttp3.FormBody;
import okhttp3.HttpUrl;
import okhttp3.Interceptor;
import okhttp3.MediaType;
import okhttp3.Request;
import okhttp3.RequestBody;
import okhttp3.Response;
import okio.Buffer;

public class CommonParamsInterceptor1 implements Interceptor {
    private static final String TAG = CommonParamsInterceptor1.class.getSimpleName ();
    private static final String METHOD_GET = "GET";
    private static final String METHOD_POST = "POST";
    private static final String TXX_SIGN = "txxSign";
    private static final String TXX_TOKEN = "token";
    private static final Charset UTF8 = Charset.forName ("UTF-8");

    @Override
    public Response intercept(Chain chain) throws IOException {
        /*獲取請求的參數(shù)*/
        Request request = chain.request ();
        String method = request.method ();//獲取方法


      try {
            HttpUrl.Builder urlBuilder = request.url ().newBuilder ();
            Request.Builder requestBuilder = request.newBuilder ();
            //統(tǒng)一去掉token
            HttpUrl httpUrl = urlBuilder.build ();

            if (METHOD_GET.equals (method)) { // GET方法
                Set<String> paramKeys = httpUrl.queryParameterNames ();
                if (paramKeys != null && paramKeys.size () != 0) {
                    if (paramKeys.contains ("token")) {
                        urlBuilder.removeAllQueryParameters ("token");
                        requestBuilder.url ( urlBuilder.build ());
                    }
                }
            } else if (METHOD_POST.equals (method)) { // POST方法
                //post 方法 加入 query 查詢 token 處理
                Set<String> paramKeys = httpUrl.queryParameterNames ();
                if (paramKeys != null && paramKeys.size () != 0) {
                    if (paramKeys.contains ("token")) {
                        urlBuilder.removeAllQueryParameters ("token");
                        requestBuilder.url ( urlBuilder.build ());
                    }
                }
                RequestBody requestBody = request.body ();//獲取請求體
                //post 請求處理
                if (requestBody != null && requestBody instanceof FormBody) {
                    FormBody formBody = (FormBody) requestBody;
                    if (formBody != null) {
                        Map<String, String> map = new HashMap<> ();//處理 txxSign
                        for (int i = 0; i < formBody.size (); i++) {
                            if (TXX_TOKEN.equals (formBody.encodedName (i))) {
                                continue;
                            }
                            map.put (formBody.encodedName (i), formBody.encodedValue (i));
                            MyLog.wtf (formBody.encodedName (i), formBody.encodedValue (i));
                        }

                        if (!map.isEmpty ()) {
                            FormBody.Builder builder = new FormBody.Builder ();
                            for (Map.Entry<String, String> m : map.entrySet ()) {
                                builder.add (m.getKey (), m.getValue ());
                            }
                            FormBody formBody1 = builder.build ();
                            requestBuilder = requestBuilder.post (formBody1);

                        }
                    }
                } else {
                    Buffer buffer = new Buffer ();
                    requestBody.writeTo (buffer);
                    String oldJsonParams = buffer.readUtf8 ();
                    HashMap<String, Object> rootMap = new Gson ().fromJson (oldJsonParams, HashMap.class); // 原始參數(shù)
                    Map<String, String> map = new HashMap<> ();//處理 txxSign
                    /* 遍歷集合*/
                    if (rootMap != null && rootMap.entrySet () != null && rootMap.entrySet ().size () != 0) {
                        for (Map.Entry<String, Object> entry : rootMap.entrySet ()) {
                            String mapKey = entry.getKey ();
                            if (TXX_TOKEN.equals (mapKey)) {
                                continue;
                            }
                            String mapValue = String.valueOf (entry.getValue ());
                            map.put (mapKey, mapValue);
                            MyLog.wtf (mapKey, mapValue);
                        }
                    }
                    String param = new Gson ().toJson (map, HashMap.class); // 原始參數(shù)
                    RequestBody body = RequestBody.create (MediaType.parse ("application/json; charset=utf-8"), param);
                    requestBuilder = requestBuilder.post (body);
                }
            }
            return chain.proceed (requestBuilder.build ());
        } catch (IOException e) {
            e.printStackTrace ();
            MyLog.wtf (TAG, "TXX_SIGN 沒有, IOException ");
        } catch (JsonSyntaxException e) {
            e.printStackTrace ();
            MyLog.wtf (TAG, "TXX_SIGN 沒有, JsonSyntaxException ");
        }
        //如果報(bào)異常
        return chain.proceed (request);
    }
}

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

友情鏈接更多精彩內(nèi)容