我是Android开发的新手,我正在开发简单的移动应用程序,我通过使用Retrofit来调用登录服务。一旦我从登录服务获得响应(令牌),我应该如何在OkHttp拦截器中存储和使用该令牌。
提前致谢。
APIClient
package com.example.dell01.firstapplication.service;
import com.example.dell01.firstapplication.UserSession;
import java.io.IOException;
import okhttp3.Interceptor;
import okhttp3.OkHttpClient;
import okhttp3.Request;
import okhttp3.Response;
import retrofit2.Retrofit;
import retrofit2.converter.gson.GsonConverterFactory;
public class APIClient {
public static final String BASE_URL = "actual url";
public static Retrofit retrofit = null;
OkHttpClient okHttpClient = new OkHttpClient().newBuilder().addInterceptor(new Interceptor() {
@Override
public Response intercept(Chain chain) throws IOException {
Request originalRequest = chain.request();
Request.Builder builder = originalRequest.newBuilder().header("Token", "token here");
Request newRequest = builder.build();
return chain.proceed(newRequest);
}
}).build();
public static Retrofit getAPIClient(){
if(retrofit == null){
retrofit = new Retrofit
.Builder()
.baseUrl(BASE_URL)
.addConverterFactory(GsonConverterFactory.create()).build();
}
return retrofit;
}
}
APIInterface
package com.example.dell01.firstapplication.service;
import com.example.dell01.firstapplication.model.Token;
import retrofit2.Call;
import retrofit2.http.Field;
import retrofit2.http.FormUrlEncoded;
import retrofit2.http.POST;
public interface APIInterface {
@POST("user/authenticate")
@FormUrlEncoded
Call<Token> getToken(@Field("username") String username, @Field("password") String password);
}
答案 0 :(得分:2)
您可以使用 SharedPreferences
以下是完整的文档: SharedPreferences
示例:
保存:
SharedPreferences preferences = getSharedPreferences("myPrefs", MODE_PRIVATE);
preferences.edit().putString("token", hawkerauthToken).commit();
提取:
String token = preferences.getString("token","");
答案 1 :(得分:0)
您应该将它们存储在共享首选项中。 默认情况下,共享首选项是私有的,除了您可以在将此令牌存储在共享首选项之前对其进行加密。