0

J'ai créé une application de connexion qui fait partie de mon processus de création d'applications natives.Il y a peu de points de terminaison utilisant la session de connexion. Il ne transmettait pas sa session à l'activité suivante. Par exemple: Si l'utilisateur est connecté, il peut accéder au reste des fonctionnalités dans d'autres activités. Mais pendant que j'essaie de changer d'activité, j'obtiens «l'utilisateur a besoin de se connecter».Comment créer une connexion http qui gère automatiquement si le client change d'activité

MainActivity.java

protected void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 
     setContentView(R.layout.activity_main); 

     jsonResponse = new LoginPOJO(); 

     // UserLogin Field 
     etUserName = (EditText) findViewById(R.id.etUserName); 
     // UserLogin Password 
     etPassword = (EditText) findViewById(R.id.etPassword); 
     // Login Button Image 
     btnLogin = (ImageView) findViewById(R.id.btnLogin); 
     btnLogin.setOnClickListener(this); 
     // User SignUp Button Image 
     ImageView btnSignUp = (ImageView) findViewById(R.id.btnSignUp); 
     btnSignUp.setOnClickListener(this); 
     // Forget Password Textbutton 
     TextView frgtPassword = (TextView) findViewById(R.id.forgetpassword); 
     frgtPassword.setOnClickListener(this); 
     // Skip for now button 
     final TextView skipfornow = (TextView) findViewById(R.id.skipnow); 
     skipfornow.setOnClickListener(this); 

     } 
private void logIn(final String username, final String password) { 
     final ProgressDialog progressDialog = new ProgressDialog(MainActivity.this); 
     progressDialog.setProgressStyle(ProgressDialog.STYLE_SPINNER); 
     progressDialog.setMessage("Logging you in..."); 
     progressDialog.setIndeterminate(true); 
     progressDialog.setCancelable(false); 
     progressDialog.show(); 
     String UPLOAD_URL = "http://xxxxx-dev.elasticbeanstalk.com/api/v1/login"; 
     final StringRequest stringRequest = new StringRequest(Request.Method.POST, UPLOAD_URL, 
       new Response.Listener<String>() { 
        @Override 
        public void onResponse(String s) { 
         //Dismissing the progress dialog 
         progressDialog.dismiss(); 
         // Getting the final Json Object 
         JSONObject parentObject; 
         try { 
          parentObject = new JSONObject(s); 

          LoginPOJO.setCode(parentObject.getString("code")); 

          // Getting the data from Data Json Object 
          JSONObject dataObject = parentObject.getJSONObject("data"); 

          // Getting data from Geo object 
          JSONObject geoObject = dataObject.getJSONObject("geo"); 

          // Getting data from businesses Array 
          JSONArray businessesArray = dataObject.getJSONArray("businesses"); 

          // Getting data from Meta Object 
          JSONObject metaObject = parentObject.getJSONObject("meta"); 

          startActivity(new Intent(MainActivity.this, PromotionsFeedActivity.class)); 
         } catch (JSONException e) { 
          e.printStackTrace(); 
         } 
         //Showing toast message of the response 
         Log.i("TAG", "onResponse: " + s); 

        } 
       }, 
       new Response.ErrorListener() { 
        @Override 
        public void onErrorResponse(VolleyError volleyError) { 
         //Dismissing the progress dialog 
         progressDialog.dismiss(); 
         //Showing snackbar 
         Toast.makeText(MainActivity.this, "Connection Problem", Toast.LENGTH_SHORT).show(); 
        } 
       }) { 
      @Override 
      protected Map<String, String> getParams() throws AuthFailureError { 
       //Converting Bitmap to String 
       //Creating parameters 
       Map<String, String> params = new Hashtable<>(); 
       params.put("apikey", Utilities.API_KEY); 
       params.put("secret", Utilities.SECRET_KEY); 
       params.put("email", username); 
       params.put("password",password); 
       //Adding parameters 
       //returning parameters 
       return params; 
      } 
     }; 
     //Creating a Request Queue 
     RequestQueue requestQueue = Volley.newRequestQueue(this); 
     //Adding request to the queue 
     requestQueue.add(stringRequest); 
    } 

feed.java

@Override 
    protected void onCreate(@Nullable Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 
     setContentView(R.layout.activity_promotions_feed); 

     jsonResponse = new LoginPOJO(); 

     communityImage = (TextView) findViewById(R.id.communityImage); 

     communityImage.setOnClickListener((View.OnClickListener) this); 

     searchImage = (TextView) findViewById(R.id.searchImage); 

     searchImage.setOnClickListener((View.OnClickListener) this); 

     specialsImage = (TextView) findViewById(R.id.searchImage); 

     specialsImage.setOnClickListener(this); 

     calenderImage = (TextView) findViewById(R.id.calenderImage); 

     calenderImage.setOnClickListener(this); 

     profileImage = (TextView) findViewById(R.id.profileImage); 

     profileImage.setOnClickListener(this); 

     TextView response = (TextView) findViewById(R.id.response); 

     String data = LoginPOJO.getCode(); 

     response.setText(data); 

    } 
private void getPromotionsFeed(final String location) { 

     final ProgressDialog progressDialog = new ProgressDialog(PromotionsFeedActivity.this); 
     progressDialog.setProgressStyle(ProgressDialog.STYLE_SPINNER); 
     progressDialog.setMessage("Getting promotions feed..."); 
     progressDialog.setIndeterminate(true); 
     progressDialog.setCancelable(false); 
     progressDialog.show(); 
     String UPLOAD_URL = "http://xxxx-dev.elasticbeanstalk.com/api/v1/get_promotions_feed"; 
     final StringRequest stringRequest = new StringRequest(Request.Method.POST, UPLOAD_URL, 
       new Response.Listener<String>() { 
        @Override 
        public void onResponse(String s) { 
         //Dismissing the progress dialog 
         progressDialog.dismiss(); 
         // Getting the final Json Object 
         JSONObject parentObject; 
         try { 
          parentObject = new JSONObject(s); 
         } catch (JSONException e) { 
          e.printStackTrace(); 
         } 
         //Showing toast message of the response 
         Log.i("TAG", "onResponse: " + s); 

        } 
       }, 
       new Response.ErrorListener() { 
        @Override 
        public void onErrorResponse(VolleyError volleyError) { 
         //Dismissing the progress dialog 
         progressDialog.dismiss(); 
         //Showing snackbar 
         Toast.makeText(PromotionsFeedActivity.this, "Connection Problem", Toast.LENGTH_SHORT).show(); 
        } 
       }) { 
      @Override 
      protected Map<String, String> getParams() throws AuthFailureError { 
       //Converting Bitmap to String 
       //Creating parameters 
       Map<String, String> params = new Hashtable<>(); 
       params.put("apikey", Utilities.API_KEY); 
       params.put("secret", Utilities.SECRET_KEY); 
       params.put("location","xxx"); 
       //Adding parameters 
       //returning parameters 
       return params; 
      } 
     }; 
     //Creating a Request Queue 
     RequestQueue requestQueue = Volley.newRequestQueue(this); 
     //Adding request to the queue 
     requestQueue.add(stringRequest); 
    } 

LogCat

04-03 18:47:26.263 10750-10750/com.example.reception.farbinder_test I/TAG: onResponse: {"code":200,"status":"ok","message":"Logged in.","data":{"id":"Pg4yYHXIQK","firstName":"Arun","lastName":"","shortName":"Arun","email":"[email protected]","role":"owner","showInviteMessage":false,"verified":true,"zipCode":"07666","location":"Teaneck, NJ","geo":{"latitude":40.888461,"longitude":-74.012066,"zipcode":"07666","city":"Teaneck","state":"NJ","type":"geo"},"defaultCommunity":{"id":18313,"name":"Teaneck, NJ Community","city":"Teaneck","state":"NJ","latitude":40.888461,"longitude":-74.012066,"type":"community"},"businesses":[{"id":72,"name":"my bus","type":"business"}],"type":"user"},"meta":{"userVideoUrl":"https://d1e6yi6s3cx2ur.cloudfront.net/videos/0/_20160316_ios-user.m4v","businessVideoUrl":"https://d1e6yi6s3cx2ur.cloudfront.net/videos/0/_20160316_ios-business.m4v","promoVideoUrl":"https://d1e6yi6s3cx2ur.cloudfront.net/videos/0/_20160316_ios-user.m4v","searchVideoUrl":"https://d1e6yi6s3cx2ur.cloudfront.net/videos/0/_20160316_ios-user.m4v","faqUrl":"http://farbinder-dev.elasticbeanstalk.com/api/v1/faq","privacyUrl":"http://farbinder-dev.elasticbeanstalk.com/api/v1/privacy","termsUrl":"http://farbinder-dev.elasticbeanstalk.com/api/v1/terms","contactFormUrl":"http://farbinder-dev.elasticbeanstalk.com/api/v1/contact?u\u003d25fee27e9d18464eadbad0faa632a9b6e82787cc613ca64e","feedbackFormUrl":"http://farbinder-dev.elasticbeanstalk.com/api/v1/feedback?u\u003d25fee27e9d18464eadbad0faa632a9b6e82787cc613ca64e","type":"links"}} 
04-03 18:47:26.265 1518-1877/system_process W/InputMethodManagerService: Window already focused, ignoring focus gain of: [email protected] attribute=null, token = [email protected] 
04-03 18:47:26.326 1518-1660/system_process V/WindowManager: Adding window Window{11f00761 u0 com.example.reception.farbinder_test/com.example.reception.farbinder_test.PromotionsFeedActivity} at 4 of 10 (after Window{27eec5b0 u0 com.example.reception.farbinder_test/com.example.reception.farbinder_test.MainActivity EXITING}) 
04-03 18:47:26.330 1518-1880/system_process V/WindowManager: Adding window Window{1217747 u0 com.example.reception.farbinder_test/com.example.reception.farbinder_test.PromotionsFeedActivity} at 4 of 11 (before Window{11f00761 u0 com.example.reception.farbinder_test/com.example.reception.farbinder_test.PromotionsFeedActivity}) 
04-03 18:47:26.441 10750-10750/com.example.reception.farbinder_test E/RecyclerView: No adapter attached; skipping layout 
04-03 18:47:26.457 1162-1162/? W/SurfaceFlinger: couldn't log to binary event log: overflow. 
04-03 18:47:27.092 10750-10750/com.example.reception.farbinder_test I/TAG: onResponse: {"code":401,"status":"error","message":"User not logged in."} 

Répondre

0

Vous faites votre login dans un service, puis le service a diffusé la connexion réussie à toutes les classes intéressées.

+0

Donc, selon vous, je dois analyser correctement la connexion aux classes intéressées. Mais le reste du point de terminaison ne prendra pas ces informations d'identification en tant que paramètres. Comment pourrais-je être en mesure d'envoyer ce message réussi à la classe intéressée. Pourriez-vous s'il vous plaît expliquer avec un exemple de code. @Gabe Sechan – Arun

+0

Regardez dans BroadcastReceivers. Ou un bus d'événement. Ou un RxJava observable. Ou juste un service lié avec un rouleau votre propre système de rappel. Il existe des dizaines de façons d'alerter les activités d'un Service, de faire des recherches. –

+0

Ohh d'accord .. Merci @Gabe Sechan – Arun