nkn*_*knj 4 cookies android http android-asynctask
我是Android开发的新手.有几个问题是什么是使上述库最佳地工作的最佳方法.
目前,我的应用程序中有三个活动.MainActivity,LoginActivity和HomeActivity.应用程序启动MainActivity,用于检查此人是否已登录.如果此人已登录,则重定向到Home,否则重定向到Login.
正如文档中提到的,我创建了一个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());
}
});
}
Run Code Online (Sandbox Code Playgroud)
问题
所以这就是我到目前为止所做的.它有效,但我不确定这是否是最佳做法.
1)cookie存储从共享首选项初始化.所以每次需要时都要创建一个新的.一定要每次使用相同的上下文.我在用getApplicationContext()
2)和4)饼干商店为您提供全部服务.只需使用与之前创建的相同的上下文创建一个新的.只要您保持一致,cookie就会正确初始化.
3)cookie存储保持共享首选项及其本地属性同步,因此只需调用 (new PersistentCookieStore(getApplicationContext())).clear();
我的守则
RestClient.java
public static void setCookieStore(PersistentCookieStore cookieStore) {
client.setCookieStore(cookieStore);
}
Run Code Online (Sandbox Code Playgroud)
LoginActivity.java
RestClient.setCookieStore(new PersistentCookieStore(getApplicationContext()));
Run Code Online (Sandbox Code Playgroud)
MainActivity.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();
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
4902 次 |
| 最近记录: |