2017-08-03 6 views
1

私はこの中でユーザーのログインを作成していますが、このログイン内でsharedpreferencesを使用してセッションを使用したいと考えています。これでセッションを実装するにはどうしたらいいですか? 以下は私のコードです。私のコードの中でどうすればよいですか?私のアプリでhttpget androidでセッションを作成するには?

パブリッククラスLoginActivityアクティビティあなたは

SharedPreferences spref = getSharedPreferences("MySpref", Context.MODE_PRIVATE); 
SharedPreferences.Editor editor = spref.edit(); 

     editor.putString("User", usr); 
      editor.commit(); 

にonPostExecute方法でログインしているユーザーの資格情報を格納するためのキー値、コードで追加され、一部修正をSharedPreferencesを作成することができView.OnClickListener {

private EditText usernameEditText; 
    private EditText passwordEditText; 
    private Button sendGetReqButton; 


    /** Called when the activity is first created. */ 
    @Override 
    public void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 
     setContentView(R.layout.activity_login); 

     usernameEditText = (EditText) findViewById(R.id.editTextUserName); 
     passwordEditText = (EditText) findViewById(R.id.editTextPassword); 

     sendGetReqButton = (Button) findViewById(R.id.button); 

     sendGetReqButton.setOnClickListener(this); 
    } 

    @Override 
    public void onClick(View v) { 

     if(v.getId() == R.id.button){ 

      // Get the values given in EditText fields 
      String userID = usernameEditText.getText().toString(); 
      String password = passwordEditText.getText().toString(); 
      System.out.println("Givennames is :" + userID + " Given password is :" + password); 

      // Pass those values to connectWithHttpGet() method 
      connectWithHttpGet(userID, password); 

      Intent in = new Intent(LoginActivity.this, RegisterActivity.class); 
      startActivity(in); 
     } 
    } 

    private void connectWithHttpGet(String userID, String password) { 

     // Connect with a server is a time consuming process. 
     //Therefore we use AsyncTask to handle it 
     // From the three generic types; 
     //First type relate with the argument send in execute() 
     //Second type relate with onProgressUpdate method which I haven't use in this code 
     //Third type relate with the return type of the doInBackground method, which also the input type of the onPostExecute method 
     class HttpGetAsyncTask extends AsyncTask<String, Void, String> { 

      @Override 
      protected String doInBackground(String... params) { 

       // As you can see, doInBackground has taken an Array of Strings as the argument 
       //We need to specifically get the givenUsername and givenPassword 

       String paramUsername = params[0]; 
       String paramPassword = params[1]; 
       System.out.println("userID" + paramUsername + " password is :" + paramPassword); 

       // Create an intermediate to connect with the Internet 
       HttpClient httpClient = new DefaultHttpClient(); 

       // Sending a GET request to the web page that we want 
       // Because of we are sending a GET request, we have to pass the values through the URL 
       HttpGet httpGet = new HttpGet("http://www.example.com/ypAndroid/api/doLogin?userID=" + paramUsername + "&password=" + paramPassword); 

       try { 
        // execute(); executes a request using the default context. 
        // Then we assign the execution result to HttpResponse 
        HttpResponse httpResponse = httpClient.execute(httpGet); 
        System.out.println("httpResponse// getEntity() ; obtains the message entity of this response"); 
        // getContent() ; creates a new InputStream object of the entity. 
        // Now we need a readable source to read the byte stream that comes as the httpResponse 
        InputStream inputStream = httpResponse.getEntity().getContent(); 

        // We have a byte stream. Next step is to convert it to a Character stream 
        InputStreamReader inputStreamReader = new InputStreamReader(inputStream); 

        // Then we have to wraps the existing reader (InputStreamReader) and buffer the input 
        BufferedReader bufferedReader = new BufferedReader(inputStreamReader); 

        // InputStreamReader contains a buffer of bytes read from the source stream and converts these into characters as needed. 
        //The buffer size is 8K 
        //Therefore we need a mechanism to append the separately coming chunks in to one String element 
        // We have to use a class that can handle modifiable sequence of characters for use in creating String 
        StringBuilder stringBuilder = new StringBuilder(); 

        String bufferedStrChunk = null; 

        // There may be so many buffered chunks. We have to go through each and every chunk of characters 
        //and assign a each chunk to bufferedStrChunk String variable 
        //and append that value one by one to the stringBuilder 
        while((bufferedStrChunk = bufferedReader.readLine()) != null){ 
         stringBuilder.append(bufferedStrChunk); 
        } 

        // Now we have the whole response as a String value. 
        //We return that value then the onPostExecute() can handle the content 
        System.out.println("Returninge of doInBackground :" + stringBuilder.toString()); 

        // If the Username and Password match, it will return "working" as response 
        // If the Username or Password wrong, it will return "invalid" as response 
        return stringBuilder.toString(); 

       } catch (ClientProtocolException cpe) { 
        System.out.println("Exceptionrates caz of httpResponse :" + cpe); 
        cpe.printStackTrace(); 
       } catch (IOException ioe) { 
        System.out.println("Secondption generates caz of httpResponse :" + ioe); 
        ioe.printStackTrace(); 
       } 

       return null; 
      } 

      // Argument comes for this method according to the return type of the doInBackground() and 
      //it is the third generic type of the AsyncTask 
      @Override 
      protected void onPostExecute(String result) { 
       super.onPostExecute(result); 

       System.out.println("Post result :" + result); 

       if(!result.equals(null)) 
        Toast.makeText(getApplicationContext(), "HTTP GET is working...", Toast.LENGTH_LONG).show(); 
       else if(result.equals("failure")){ 
        Toast.makeText(getApplicationContext(), "Invalid...", Toast.LENGTH_LONG).show(); 
       } 
      } 
     } 

     // Initialize the AsyncTask class 
     HttpGetAsyncTask httpGetAsyncTask = new HttpGetAsyncTask(); 
     // Parameter we pass in the execute() method is relate to the first generic type of the AsyncTask 
     // We are passing the connectWithHttpGet() method arguments to that 
     httpGetAsyncTask.execute(userID, password); 

    } 
} 

答えて

0

を実装して拡張します

/** Called when the activity is first created. */ 
@Override 
public void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.activity_login); 

    usernameEditText = (EditText) findViewById(R.id.editTextUserName); 
    passwordEditText = (EditText) findViewById(R.id.editTextPassword); 

    sendGetReqButton = (Button) findViewById(R.id.button); 

    sendGetReqButton.setOnClickListener(this); 
    // Regitration Button is required 

} 

@Override 
public void onClick(View v) { 

    if(v.getId() == R.id.button){ 


     // Get the values given in EditText fields 
     String userID = usernameEditText.getText().toString(); 
     String password = passwordEditText.getText().toString(); 
     System.out.println("Givennames is :" + userID + " Given password is :" + password); 

     if (userID!=null && password!=null) { 
      // Pass those values to connectWithHttpGet() method 
      connectWithHttpGet(userID, password); 
     } 


     // Here Registration need to be in different button 
     // Intent in = new Intent(LoginActivity.this,RegisterActivity.class); 
     //   startActivity(in); 


    } 
} 

private void connectWithHttpGet(String userID, String password) { 

    // Here you can check newtork connection is ok or not 


    HttpGetAsyncTask httpGetAsyncTask = new HttpGetAsyncTask(); 
    // Parameter we pass in the execute() method is relate to the first generic type of the AsyncTask 
    // We are passing the connectWithHttpGet() method arguments to that 
    httpGetAsyncTask.execute(userID, password); 
} 

    // Connect with a server is a time consuming process. 
    //Therefore we use AsyncTask to handle it 
    // From the three generic types; 
    //First type relate with the argument send in execute() 
    //Second type relate with onProgressUpdate method which I haven't use in this code 
    //Third type relate with the return type of the doInBackground method, which also the input type of the onPostExecute method 
    private class HttpGetAsyncTask extends AsyncTask<String, Void, String> { 

     String usr; 

     protected void onPreExecute() { 


     // Here you can use loading animation 


     } 

     @Override 
     protected String doInBackground(String... params) { 

      // As you can see, doInBackground has taken an Array of Strings as the argument 
      //We need to specifically get the givenUsername and givenPassword 

      String paramUsername = params[0]; 
      usr=paramUsername; 
      String paramPassword = params[1]; 
      System.out.println("userID" + paramUsername + " password is :" + paramPassword); 

      // Create an intermediate to connect with the Internet 
      HttpClient httpClient = new DefaultHttpClient(); 

      // Sending a GET request to the web page that we want 
      // Because of we are sending a GET request, we have to pass the values through the URL 
      HttpGet httpGet = new HttpGet("http://www.example.com/ypAndroid/api/doLogin?userID=" + paramUsername + "&password=" + paramPassword); 

      try { 
       // execute(); executes a request using the default context. 
       // Then we assign the execution result to HttpResponse 
       HttpResponse httpResponse = httpClient.execute(httpGet); 
       System.out.println("httpResponse// getEntity() ; obtains the message entity of this response"); 
       // getContent() ; creates a new InputStream object of the entity. 
       // Now we need a readable source to read the byte stream that comes as the httpResponse 
       InputStream inputStream = httpResponse.getEntity().getContent(); 

       // We have a byte stream. Next step is to convert it to a Character stream 
       InputStreamReader inputStreamReader = new InputStreamReader(inputStream); 

       // Then we have to wraps the existing reader (InputStreamReader) and buffer the input 
       BufferedReader bufferedReader = new BufferedReader(inputStreamReader); 

       // InputStreamReader contains a buffer of bytes read from the source stream and converts these into characters as needed. 
       //The buffer size is 8K 
       //Therefore we need a mechanism to append the separately coming chunks in to one String element 
       // We have to use a class that can handle modifiable sequence of characters for use in creating String 
       StringBuilder stringBuilder = new StringBuilder(); 

       String bufferedStrChunk = null; 

       // There may be so many buffered chunks. We have to go through each and every chunk of characters 
       //and assign a each chunk to bufferedStrChunk String variable 
       //and append that value one by one to the stringBuilder 
       while((bufferedStrChunk = bufferedReader.readLine()) != null){ 
        stringBuilder.append(bufferedStrChunk); 
       } 

       // Now we have the whole response as a String value. 
       //We return that value then the onPostExecute() can handle the content 
       System.out.println("Returninge of doInBackground :" + stringBuilder.toString()); 

       // If the Username and Password match, it will return "working" as response 
       // If the Username or Password wrong, it will return "invalid" as response 
       return stringBuilder.toString(); 

      } catch (ClientProtocolException cpe) { 
       System.out.println("Exceptionrates caz of httpResponse :" + cpe); 
       cpe.printStackTrace(); 
      } catch (IOException ioe) { 
       System.out.println("Secondption generates caz of httpResponse :" + ioe); 
       ioe.printStackTrace(); 
      } 

      return null; 
     } 

     // Argument comes for this method according to the return type of the doInBackground() and 
     //it is the third generic type of the AsyncTask 
     @Override 
     protected void onPostExecute(String result) { 
      super.onPostExecute(result); 

      System.out.println("Post result :" + result); 

      if(!result.equals(null)) 

       // Here you do the logic 
      // if the response is JSON then you have use json Parser 
      // JSONObject jObj = new JSONObject(result); 
     // if user is valid then you can store it in SharedPreferences 
     // response maybe different types so you have check it vaild or not 


       SharedPreferences spref = getSharedPreferences("MySpref", Context.MODE_PRIVATE); 
      SharedPreferences.Editor editor = spref.edit(); 

      editor.putString("User", usr); 
        editor.commit(); 

       //YOU CAN NAVIGATE TO NEW PAGE 

      // Toast.makeText(getApplicationContext(), "HTTP GET is working...", Toast.LENGTH_LONG).show(); 
      else if(result.equals("failure")){ 
       Toast.makeText(getApplicationContext(), "Invalid...", Toast.LENGTH_LONG).show(); 
      } 
     } 
    } 

希望するges works

+0

私はどのように私のコードでこれを実装するのですか? – Rohu

+0

@Rohuコードに変更が必要、いくつかの変更が行われました –