在使用后端的android应用中使用im的im已经使用Retrofit2存在。 当我插入login / password时,我已经在进行身份验证了,我从服务器获得了带有字符串响应的令牌响应,即时消息使用静态字符串值将令牌从我的loginClass传递到retrofitBuilder类。我没有使用模型AccesToken来获取令牌的回调,因为令牌的回调响应不是json格式,而是仅包含令牌的字符串。 所有这些都很好,工作正常, 问题是我要刷新令牌时。 在我的令牌中,我有一个字符串属性公司。当我使用已经具有Company value = 1的用户登录时;在令牌中,他只能在我的申请中看到该公司的信息。 登录后在仪表板上,我已经使用公司名称进行了微调。当我选择另一个公司时,我正在向服务器发送请求,并且我收到带有neww令牌的新响应,所以当我选择公司并获取它时,我需要手动获取新令牌,但是问题是当我选择公司时数据是没有自动更新,我必须断开并登录另外一次查看我已经选择的公司的数据,我已经做了验证器,但是我确实知道如何使用它来刷新我的令牌而不会断开连接。 选择微调框时,我有手动令牌 请给我一个解决方案,谢谢英语
这是我的服务电话:
@Headers("Accept: application/json")
@POST("api/auth/token")
Call<String>token3(@Body Useer useer);
这就是我从回拨电话中获取令牌的方式。
JWT parsedJWT = new JWT(response.body());
String token = response.body().toString();
tokenManager.saveToken(token);
tokeen =token;
这就是我如何在Retrofit构建器中获取令牌的方法:
public static <T> T createServiceWithAuth(Class<T> service, final TokenManager tokenManager){
String data=LoginActivity.getTokeen();
OkHttpClient newClient = client.newBuilder().addInterceptor(new Interceptor() {
@Override
public Response intercept(Chain chain) throws IOException {
Request request = chain.request();
Request.Builder builder = request.newBuilder();
// if(tokenManager.getToken().getKey() != null){
builder.addHeader("Authorization", "Bearer "+ data);
// builder.addHeader("Authorization", "Bearer "+ );
request = builder.build();
return chain.proceed(request);
这是我从微调器中选择公司时从服务器手动获得新令牌的方式:
int hold = spinner.getSelectedItemPosition();
campany campanyy = campanyList.get(hold);
String selectcampp=campanyy.getName();
String usernme = "admin";
String password="Admin123*";
ChangeCMP change=new ChangeCMP(usernme,password,selectcampp);
Call<RefreshToken> call4=service.ChangeCMP(change);
call4.enqueue(new Callback<RefreshToken>() {
@Override
public void onResponse(Call<RefreshToken> call, Response<RefreshToken> response) {
if (response.isSuccessful()){
Log.w(TAG, "onResponse: " + response.body().getValue());
String NEWTOKEN=response.body().getValue().toString();
这是我的电话,要求手动获取新的刷新令牌:
@POST("api/auth/PostChangeCMP")
Call<RefreshToken>ChangeCMP(@Body ChangeCMP changeCMP );