【问题标题】:How to keep a session in android using cookies?如何使用cookie在android中保持会话?
【发布时间】:2018-03-08 14:26:16
【问题描述】:

需要我的应用程序登录并保持相同的会话 ID 直到我注销。在 mij 登录我使用这个:

     public class loginTask extends AsyncTask<String, String, String> {

            @Override
            protected String doInBackground(String... params) {
                String loginData = params[0];
                String text = "";
                BufferedReader reader = null;

                // Send data
                try {
                    // Defined URL  where to send data
                    URL url = new URL(URL);

                    // getting cookies:
                    URLConnection conn = url.openConnection();
                    conn.connect();

                    // setting cookies
                    cookieManager.setCookies(url.openConnection());
                    cookieManager.storeCookies(conn);
}

当应用程序自动登录时,它需要向不同的 URL 发送一些数据:

Public class sendVisumNo extends AsyncTask<String, String, String> {

        @Override
        protected String doInBackground(String... params) {
            String visumNo = params[0];
            String text = "";
            BufferedReader reader = null;

            // Send data
            try {
                // Defined URL  where to send data
                URL send_visum_url= new URL(SEND_VISUM_URL);

                // getting cookies:
                conn = loginURL.openConnection();
                conn.connect();

                // setting cookies
                cookieManager.setCookies(loginURL.openConnection());
                cookieManager.storeCookies(conn);
}

如何为 SEND_VISUM_URL 提供与第一个相同的 cookie/会话 ID?直到我退出

任何帮助将不胜感激!

【问题讨论】:

  • 很抱歉以前从未这样做过,但您不能将 cookie 信息保存到文件中。然后在自动登录期间打开它(如果可用),如果失败则正常登录?
  • 在这里查看我的答案stackoverflow.com/a/35472180/4146722

标签: android session cookies


【解决方案1】:

您可以使用SharedPreferences 来执行此操作 This is more complete answer to shared preferences.

private SharedPreferences preferences;
private SharedPreferences.Editor editor;
preferences = getSharedPreferences("com.example.yourpackagename.bla", Context.MODE_PRIVATE);`

存储数据:

String cookies="someweirdbigstring";
editor = preferences.edit();
editor.putString("cookies",cookies);
editor.apply()

检索数据:

String cookies = preferences.getString("cookies", null);
if (cookies!=null){
    //Do stuff with cookies
}else{
    // No cookies
}

【讨论】:

  • 谢谢,但我如何从 cookieManager.setCookies(url.openConnection()) 分配 sessionid;到另一个 URL 连接?
  • 我更新了关于如何检索数据的答案。希望对您有所帮助。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2014-09-30
  • 2017-10-10
  • 2013-04-28
  • 2015-02-22
  • 2023-04-03
  • 2012-05-29
  • 2013-10-06
相关资源
最近更新 更多