retrofit+rxjava入头参 自定义日志拦截器

账号登录时候得到它的状态值

SharedPreferences sharedPreferences = getSharedPreferences(“user”,MODE_PRIVATE);
sharedPreferences.edit().putString(“userId”,user.getResult().getUserId()+"").putString(“sessionId”,user.getResult().getSessionId()).putString(“userName”,user.getResult().getNickName()).commit();

//构造方法
public RetrofitUtils(){
//自定义日至拦截器
client=new OkHttpClient.Builder()
.writeTimeout(2000, TimeUnit.SECONDS)
.readTimeout(2000,TimeUnit.SECONDS)
.connectTimeout(2000,TimeUnit.SECONDS)
.retryOnConnectionFailure(true)
.addInterceptor(new Interceptor() {
@Override
public Response intercept(Chain chain) throws IOException {

                    Request request = chain.request();
                    SharedPreferences sharedPreferences = App.getApplication().getSharedPreferences("user",Context.MODE_PRIVATE);
                    String userId = sharedPreferences.getString("userId", "");
                    String sessionId = sharedPreferences.getString("sessionId", "");
                    Log.i("TTTT",userId);
                    Log.i("TTTT",sessionId);
                    //重新构造请求
                    Request.Builder builder = request.newBuilder();
                    //把原来的请求参数原样的放进去
                    builder.method(request.method(),request.body());
                    //添加特殊的userid  sessionid
                    if(!TextUtils.isEmpty(userId)&&!TextUtils.isEmpty(sessionId)){
                        builder.addHeader("userId",userId);
                        builder.addHeader("sessionId",sessionId);
                    }
                    Request request_ = builder.build();
                    return chain.proceed(request_);
                }
            })
            .build();

    Retrofit retrofit = new Retrofit.Builder()
            .addCallAdapterFactory(RxJavaCallAdapterFactory.create())
            .baseUrl(BASE_URL)
            .client(client)
            .build();
    baseApis=retrofit.create(BaseApis.class);
}

需要在app里面进行配置上下文

package com.example.project.app;

import android.app.Application;
import android.content.Context;

import com.facebook.drawee.backends.pipeline.Fresco;

public class App extends Application {

public static Context mContext;

@Override
public void onCreate() {
    super.onCreate();

    Fresco.initialize(this);
    mContext = getApplicationContext();
}

public static Context getApplication(){
    return mContext;
}

}

猜你喜欢

转载自blog.csdn.net/qq_42960779/article/details/86555934
今日推荐