2012-07-19 67 views
1

你好早安朋友,问题与登录/注销funcationality

我工作的,需要login/logout funcationality应用。在这里我登录成功,之后,注销也完美,但是当我尝试again login进入应用程序,给我406 status code。这里我使用sharedpreference作为登录/注销功能。

但是,当我restart the application随机作品意味着它可能有时登录或有时不会。但是当close the emulator再次启动然后工作完美。

Login.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; 

在这里,我想会的数据不清晰正确,普莱舍让我知道我做的错误。还有另一种登录/注销解决方案,然后通知我。

谢谢。

回答

2

我不认为你的SharedPreferences API有什么问题。我检查了你正在使用的Rest网站服务URL和它的一个Drupal站点。你必须先调用user.logout来注销。因为你正在使用REST尝试this.I还没有测试这一点,但它应该工作

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

strResponse = util.makeWebCall(loginURL,sessionid); 

你也可能要检查,如果你如果已经启用的应用程序/ x-WWW的形式urlencoded的内容类型是否正确配置了REST服务器endpoint.Check您的REST服务端点。从服务中的编辑资源转到服务器。因为在第一次调用登录时它工作正常,所以我怀疑这可能是问题所在。但仍然检查它。

+1

请让我们知道这两个解决方案中的哪一个解决了它,因为这可能会帮助一些人有类似的问题。谢谢。 – 2012-07-19 07:32:04

+0

目前我正在使用第一个解决方案,它工作正常,我不尝试第二个解决方案。 – 2012-07-19 09:05:15

+0

这里我传递了sessionID的usrId instad – 2012-07-19 09:06:40