gpt4 book ai didi

Android 异步 Http 客户端 (loopj) 和持久性 Cookie 存储

转载 作者:塔克拉玛干 更新时间:2023-11-03 00:50:10 25 4
gpt4 key购买 nike

我是 Android 开发新手。关于使上述库以最佳方式工作的最佳方法有几个问题。

目前,我的应用程序中有三个 Activity 。 MainActivity、LoginActivity 和 HomeActivity。该应用程序启动 MainActivity,它应该检查此人是否已登录。如果此人已登录,则重定向到主页,否则重定向到登录。

documentation 中所述,我创建了一个 RestClient 类。我可以在我的 LoginActivity 中成功发出请求并获得响应。这是我的登录代码。

public void login() {
RequestParams params = new RequestParams();
params.put(AUTH_PARAMETER_EMAIL, mEmail);
params.put(AUTH_PARAMETER_PASSWORD, mPassword);

RestClient.setCookieStore(new PersistentCookieStore(this));
RestClient.post(AUTH_URL, params, new JsonHttpResponseHandler() {
@Override
public void onFinish() {
showProgress(false);
}

@Override
public void onSuccess(JSONObject response) {
String response_status = null;
try {
response_status = response.getString(AUTH_RESPONSE_STATUS);
} catch (JSONException e) {
Toast.makeText(LoginActivity.this,
"ERROR: " + e.toString(), Toast.LENGTH_LONG).show();
Log.e(TAG, e.toString());
}
if (response_status.equals(AUTH_SUCCESS_STATUS)) {
finish();
} else {
mPasswordView
.setError(getString(R.string.error_incorrect_password));
mPasswordView.requestFocus();
}
}

@Override
public void onFailure(Throwable e, String content) {
Toast.makeText(LoginActivity.this, "ERROR: " + e.toString(),
Toast.LENGTH_LONG).show();
Log.e(TAG, e.toString());
}

});
}

问题

  1. 这将在每次请求时创建一个新的 cookie 存储制成。我应该把它放在哪里以便只创建一次?应该我把它放在 MainActivity 的 onCreate 中,然后将它分配给一个全局变量?这是最佳做法吗?
  2. 在我的 MainActivity 中,如何检查已创建的 session cookie从服务器发送?我知道这是共享偏好,但如何我能得到它吗?文档没有说明它将是什么变量存储在 SharedPreferences 中。
  3. 当我需要注销某人时,我是删除共享首选项还是删除cookie存储或两者?它们是否自动保持同步?
  4. 当应用程序重新启动时,我如何从共享首选项中保存的数据初始化 cookie 存储?
  5. 如果您知道任何正确实现此功能的开源代码,我很乐意查看并亲自回答这些问题。只需提供一个链接!

最佳答案

所以这是我到目前为止所做的。它有效,但我不确定这是否是最佳实践。

1) cookie 存储从 sharedpreference 初始化。因此,只需在每次需要时创建一个新的即可。确保每次都使用相同的上下文。我正在使用 getApplicationContext()

2) 和 4) 曲奇店为您代劳。只需创建一个与您之前创建的上下文相同的新上下文。只要您保持一致,cookie 就会正确初始化。

3) cookie 存储保持共享首选项及其本地属性同步,因此只需调用 (new PersistentCookieStore(getApplicationContext())).clear();

我的代码

RestClient.java

public static void setCookieStore(PersistentCookieStore cookieStore) {
client.setCookieStore(cookieStore);
}

登录 Activity .java

RestClient.setCookieStore(new PersistentCookieStore(getApplicationContext()));

主 Activity .java

private void loginRouter() {
PersistentCookieStore mCookieStore = new PersistentCookieStore(
getApplicationContext());
List<Cookie> cookies = mCookieStore.getCookies();
for (Cookie c : cookies) {
if (c.getName().equals("session")) {
startActivity(new Intent(this, HomeActivity.class));
finish();
}
}
launchSplashPage();
}

关于Android 异步 Http 客户端 (loopj) 和持久性 Cookie 存储,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16647287/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com