Android用のSNSアプリを作ろうとしています。私の質問は、ユーザーがログインしたときにユーザー セッションを維持する方法です。
上記の質問の解決策を見つけるのを手伝ってください。
Android用のSNSアプリを作ろうとしています。私の質問は、ユーザーがログインしたときにユーザー セッションを維持する方法です。
上記の質問の解決策を見つけるのを手伝ってください。
試す
public class Session {
private static String sessionId;
private static String userRole;
public static void setSessionId(String sessionId) {
Session.sessionId = sessionId;
}
public static String getSessionId() {
return sessionId;
}
}
このクラスを使用して、他のすべてのアクティビティにインポートします。独自の関数を定義して、特定のセッション データを維持できます
上記のリンクをご覧ください。それはかなり詳細です。
シングルトンを使用して、ユーザーセッションを維持します。
SharedPreferences を使用してセッションを作成します。
public class Session {
private SharedPreferences prefs;
public Session(Context cntx) {
// TODO Auto-generated constructor stub
prefs = PreferenceManager.getDefaultSharedPreferences(cntx);
}
public void setusename(String usename) {
prefs.edit().putString("usename", usename).commit();
}
public String getusename() {
String usename = prefs.getString("usename","");
return usename;
}
}
このクラスを作成した後、これを使用したい場合は、このようにオブジェクトを作成し、このクラスを次のように使用します
private Session session;//global variable
session = new Session(cntx); //in oncreate
//and now we set sharedpreference then use this like
session.setusename("USERNAME");
now when ever u want to get username then same work for session object and call this
session.getusename();
頑張ってください:)パスワードも同じです
とを使用DefaultHttpClient
します。これに似たもの:HttpRequestInterceptor
HttpResponseInterceptor
public class HTTPClients {
private static DefaultHttpClient _defaultClient;
private static String session_id;
private static HTTPClients _me;
private HTTPClients() {
}
public static DefaultHttpClient getDefaultHttpClient(){
if ( _defaultClient == null ) {
_defaultClient = new DefaultHttpClient();
_me = new HTTPClients();
_defaultClient.addResponseInterceptor(_me.new SessionKeeper());
_defaultClient.addRequestInterceptor(_me.new SessionAdder());
}
return _defaultClient;
}
private class SessionAdder implements HttpRequestInterceptor {
@Override
public void process(HttpRequest request, HttpContext context)
throws HttpException, IOException {
Log.d("SessionKeeper", "Adding session with the following string: " + session_id);
if ( session_id != null ) {
request.setHeader("Cookie", session_id);
}
}
}
private class SessionKeeper implements HttpResponseInterceptor {
@Override
public void process(HttpResponse response, HttpContext context)
throws HttpException, IOException {
Header[] headers = response.getHeaders("Set-Cookie");
if ( headers != null && headers.length == 1 ){
Log.d("SessionKeeper", "Keeping session with the following string: " + headers[0].getValue());
session_id = headers[0].getValue();
}
}
}
}
そのセッションIDを送信しようとすると、Androidクライアント側で同様の問題が発生し、サーバー側が新しいセッションを作成しています...しかし、Androidクライアント側でDefaulthttpClientを2回作成していないことを確認します... httpclientを一度だけ作成して、メインアクティビティを言って、オブジェクトを他のアクティビティに渡します...... 2番目のHttpClientを作成しないでください