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);
}
}
http okhttp 去除token 通用方法,未驗(yàn)證
?著作權(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ù)。
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。