Как сохранить идентификатор сеанса и отправить его при доступе к серверу? - PullRequest
1 голос
/ 28 января 2020

Чтобы поддерживать сеанс, я должен использовать идентификатор сеанса. Как сохранить идентификатор сеанса и отправлять его каждый раз, когда вы получаете доступ к серверу?

  • Я получаю идентификатор сеанса в заголовок . Вот ответ от сервера Fiddler:

Set-Cook ie: JSESSIONID = b09aa2c816d1b;

  • Класс для создания интерфейса :

    public class NetworkService {
    private static final String BASE_URL = "http://";
    private static NetworkService mInstance;
    private Retrofit mRetrofit;
    
    private NetworkService() {
        mRetrofit = new Retrofit.Builder()
                .baseUrl(BASE_URL)
                .addConverterFactory(GsonConverterFactory.create())
                .build();
    }
    public static NetworkService getInstance() {
        if (mInstance == null) {
            mInstance = new NetworkService();
        }
        return mInstance;
    }
    public ApiInterface service() {
        return mRetrofit.create(ApiInterface.class);
    }
    }
    
  • API:

    public interface ApiInterface {
    @POST("Register?app=WebAPI")
    Call<RegResponse> registration(@Query("phone") String phone);
    }
    
  • ИСПОЛЬЗОВАНИЕ:

    NetworkService.getInstance()
    .service()
    .registration(phone)                
    .enqueue(new Callback<RegResponse>() {
    @Override
        public void onResponse(Call<RegResponse> call, Response<RegResponse>response) {
    
        }
    @Override
    public void onFailure(Call<RegResponse> call, Throwable t) {
    }
    });
    

Может кто-нибудь помочь мне решить эту проблему ??

1 Ответ

1 голос
/ 28 января 2020

Для сохранения идентификатора сеанса на локальном устройстве используйте Shared Preferences. Здесь используется общий префикс, например, для сохранения и получения идентификатора сеанса.



import android.content.Context;
import android.content.SharedPreferences;

public class SharedPrefManager {

    private static final String PREF_NAME = "AndroidHivePref";
    SharedPreferences pref;

    // Editor for Shared preferences
    SharedPreferences.Editor editor;

    // Context
    Context _context;
    // Shared pref mode
    int PRIVATE_MODE = 0;


    public SharedPrefManager(Context context){
        this._context = context;
        pref = _context.getSharedPreferences(PREF_NAME, PRIVATE_MODE);
        editor = pref.edit();
    }

    public void savesession(String sessionid){
        editor.putString("SESSION_ID",session);
        editor.commit();
    }

   public String getsessionid(){
          String sessionid = pref.getString("SESSION_ID", null);
          return sessionid;
   }


}

Использование


//To save Sessionid from onResponse method
...
@Override
    public void onResponse(Call<RegResponse> call, Response<RegResponse>response) {
          // Get sessionid from response object.

          ...
          SharedPrefManager manager = new SharedPrefManager(getApplicationContext());
           //Context object is require to create its object.

          ...
         manager.savesessionid(sessionid);//sessionid is string object got from response above

    }
  ....

// When you want to send sessionid to server either in request data or in request header, get sessionid string object from SharedPrefManager and append it to request object.


SharedPrefManager manager = new SharedPrefManager(getApplicationContext());

String sessionid = manager.getsessionid();


Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...