1

こんにちは、おはようございます。

私は機能性を必要とするアプリケーションに取り組んでいますlogin/logout。ここでログインに成功した後、ログアウトも完璧にagain login機能しますが、アプリケーションにアクセスしようとすると406 status code. ここではsharedpreference、ログイン/ログアウト機能に s を使用しています。

しかし、restart the applicationランダムに動作すると、ログインする場合とログインしない場合があります。しかし、close the emulator再び開始すると、完璧に機能します。

ログイン.java

onPostExecute()以下のコードのメソッドを確認してください

  @Override
    protected Void doInBackground(Void... params) {
        // TODO Auto-generated method stub

            String loginURL = "http://www.cheerfoolz.com/rest/user/login";

            strResponse = util.makeWebCall(loginURL, uName, Password);

              try {
                JSONObject jsonSession = new JSONObject(strResponse);

                session = new SessionID();
                SessionID.sessionId = jsonSession.getString("sessid");
                SessionID.sessionName = jsonSession.getString("session_name");

                JSONObject jsonuser=jsonSession.getJSONObject("user");
                SessionID.userID = jsonuser.getInt("uid");


            } catch (JSONException e1) {
                e1.printStackTrace();
            }

        return null;
    }

    @Override
    public void onPostExecute(Void result) {
        // TODO Auto-generated method stub
        super.onPostExecute(result);

            try {
                if (strResponse.substring(KEY_SUCCESS) != null) {
                    txterror.setText("");

                    SharedPreferences userDetails =getSharedPreferences("userdetails", MODE_PRIVATE);
                    Editor edit = userDetails.edit();
                    edit.putString("username", uName);
                    edit.putString("password", Password);
                    edit.commit();


                } else {
                    txterror.setText("Username and Password Not valid !!!");
                }
            } catch (Exception e) {
                // TODO: handle exception
            }
    }

Main.java

メインクラスにはログアウトボタンがあります。

case R.id.home_btn_feature_logout:

        SessionID.setUserID(0);

        SharedPreferences settings = getSharedPreferences("userdetails", MODE_PRIVATE);
        SharedPreferences.Editor editor = settings.edit();
        editor.remove("username");
        editor.remove("password");
        editor.clear();
        editor.commit();

        login.setVisibility(View.VISIBLE);
        logout.setVisibility(View.GONE);

        break;

ここで、セッション データが適切にクリアされていないと思います。間違っているところを教えてください。そして、ログイン/ログアウトのための別の解決策があり、それから私に知らせてください.

ありがとうございました。

4

1 に答える 1

2

SharedPreferences API に問題があるとは思いません。使用している REST Web サービスの URL と Drupal サイトを確認しました。最初に user.logout を呼び出してログアウトする必要があります。REST を使用しているので、これを試してみてください。これをテストしましたが、動作するはずです

String loginURL = "http://www.cheerfoolz.com/rest/user/logout";

strResponse = util.makeWebCall(loginURL,sessionid);

また、REST サーバー エンドポイントが正しく構成されているかどうかを確認することもできます。REST サービス エンドポイントの application/x-www-form-urlencoded コンテンツ タイプが有効になっているかどうかを確認してください。[サービス] の [リソースの編集] から [サーバー] に移動します。ログインが初めて呼び出されたときに正常に動作していることは、これが問題である可能性があるとは思えませんが、それでも確認してください。

于 2012-07-19T06:16:57.393 に答える