Effettuare Login con dati Json

mau90

Nuovo Utente
2 Ago 2019
18
1
3
Nuovo giorno, nuovo problema!
Vorrei effettuare il login sulla mia app utilizzando i dati recuperati tramite Json, ma non saprei come fare... dovrei trovare il modo per rendere tali dati delle variabili? se si, come? ...

di seguito vi inserisco il codice da me sviluppato per recuperare il Json e per effettuare il login sull'app... è un po incasinato, ma funziona tutto perfettamente, il json funziona, devo solo capire come utilizzarlo per effettuare il login!

Il codice elencato con le lettere A-B-C ecc è quello che riguarda la struttura di login.
Il codice elencato con i numeri è la parte di codice che effettua il recupero del json

Queste sono delle costanti provvisorie solo per verificare il corretto funzionamento del login;
al posto di queste dovrei inserire l'username e la password presenti sul json... almeno credo
final private String nomeUtente = "maurizio";
final private String pass = "1234";

PHP:
package com.example.progettoandroid2;

import android.content.Intent;
import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.util.Log;
import android.view.View;
import android.widget.Button;
import android.widget.EditText;
import android.widget.TextView;
import android.widget.Toast;

import com.android.volley.Request;
import com.android.volley.RequestQueue;
import com.android.volley.Response;
import com.android.volley.VolleyError;
import com.android.volley.toolbox.JsonObjectRequest;
import com.android.volley.toolbox.Volley;

import org.json.JSONArray;
import org.json.JSONException;
import org.json.JSONObject;

public class LoginActivity extends AppCompatActivity {

    private TextView mTextViewResult;
    private RequestQueue mQueue;
    // A. mi dichiaro le variabili
    TextView benvenuto;
    EditText utente;
    EditText password;
    Button login;

    //F. scrivo delle costanti per verificare l'autenticazione
    final private String nomeUtente = "maurizio";
    final private String pass = "1234";



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

        mTextViewResult = findViewById(R.id.text_view_result);
        Button buttonParse = findViewById(R.id.button_parse);
        // B. mi collego le variabili ai componenti
        benvenuto = findViewById(R.id.benvenuto);
        utente = findViewById(R.id.utente);
        password = findViewById(R.id.password);
        login = findViewById(R.id.login);

        //Creiamo una RequestQueue, che richiede come pararametro il context
        //questo oggetto si occupa di tutte le operazioni di rete, della lettura e della scrittura sulla cache
        // del parsing e delle reisposte
        mQueue = Volley.newRequestQueue(this);

        buttonParse.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                jsonParse();
            }
        });
    }

    private void jsonParse() {
        Log.d("ingresso", "messaggio");
        //1. All'interno di una costante memorizziamo l'url del file Json
        String url = "rimuovo l'url per questioni di privacy, è presente il mio ip";

        //2. Dovendo effettuare il parsing di un array, ci serve un oggetto di tipo "JsonArrayRequest".
        //Il costruttore di questo richiede vari parametri: GET per prelevare dati; POST per inviarli.
        //Nel nostro caso, dovendo prelevare i dati, sfruttiamo il metodo GET.
        JsonObjectRequest request = new JsonObjectRequest(Request.Method.GET, url, null,
                new Response.Listener<JSONObject>() {

                    //3. Metodo che attende una rispsota del listner
                    // Se otteniamo la risposta, avremo un array all'interno di un oggetto JSON.
                    // Quindi scansioniamo tutti gli elementi all'interno di un ciclo *
                    @Override
                    public void onResponse(JSONObject response) {

                        //Log.d("ingresso", url);

                        try {
                            JSONArray jsonArray = response.getJSONArray("Dati");

                            for (int i = 0; i < jsonArray.length(); i++) { //* ciclo

                                //4. Per prelevare un oggetto all'interno dell'array sfruttiamo JSONObject
                                //I dati all'interno di questo oggetto possono essere prelevati tramite gli appositi getter:
                                //Queste istruzioni possono generare eccezioni, quindi vanno inserite all'interno di un blocco try-catch
                                JSONObject dato = jsonArray.getJSONObject(i);

                                String id = dato.getString("id");
                                String fullname = dato.getString("fullname");
                                String username = dato.getString("username");
                                String password = dato.getString("password");


                                mTextViewResult.append(id + ", " + fullname +  ", " + username +  ", " + password + "\n\n");

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

                    }
                }, new Response.ErrorListener() {

            //5. Metodo che attende e gestisce eventuali errori
            @Override
            public void onErrorResponse(VolleyError error) {
                error.printStackTrace();

            }
        });

        mQueue.add(request);
    }
    /* C. creazione della funzione di login
        Andiamo sul Design del file xml, selezioniamo il bottone e dal menu Attributes scrivamo "login"
        nell onClick. Successivamente ci richiamiamo sul Text del file xml e cliccchiamo sulla lampadina
        rossa a livello dell'onClick="login"; a questo punto, dal menu tendina che verrà fuori
        selezioniamo Create 'login(View)' in 'MainActivity' per creare la funzione nel MainActivity.java
         */

    public void login(View view) {

        /* D. creiamo un Toast per capire se la funzione login funziona.
        quando clicchiamo sul bottone dovrebbe uscire un pop-up che dice "preso"
         */

        //Toast.makeText(this, "preso", Toast.LENGTH_SHORT).show();

        // G.
        if (utente.getText().toString().equals(nomeUtente) && password.getText().toString().equals(pass)) {

        /* E. a questo punto creiamo una seconda activity nella qualle saremo mandati una volta loggati:
        tasto destro sulla cartella java del menu di sinistra; new; Activity; Empty Activity.
         */

            // E. scriviamo la funzione per andare alla seconda pagina
            Intent vaiMainActivity2 = new Intent(this, LoggedActivity.class);

            // H.
            vaiMainActivity2.putExtra("msg", utente.getText().toString());

            // E.
            startActivity(vaiMainActivity2);
        }

        //G.
        else {
            Toast.makeText(this, "nome utente e password errati", Toast.LENGTH_SHORT).show();
        }


    }
}
 
Discussioni simili
Autore Titolo Forum Risposte Data
M Risolto Effettuare un redirect tramite DNS (Era: DNS Redirect) Domini 1
W Come effettuare ripetute chiamate Curl con la stessa connessione autentica [PHP] PHP 0
elpirata [PHP][RISOLTO] Effettuare la somma dei tempi di lavorazione PHP 3
A Funzione javascript per effettuare la slide del carosello in avanti Javascript 0
N [Javascript] Effettuare spaziatura tra caratteri Javascript 0
JackIlPazzo Effettuare scraping in javascript? Javascript 0
JackIlPazzo Espressione regolare per effettuare match con URI PHP 1
M verificare se il valore inserito nel campo è un numero ed effettuare dei calcoli Javascript 2
xone Come effettuare backup del database mysql senza exec PHP 0
G Effettuare query con data del giorno in corso PHP 3
M Effettuare i controlli di obbligatorietà lato server e, per quanto possibile, di tipo. PHP 0
felino [JS] Passare un array ed effettuare la somma degli elementi Javascript 2
felino [Virtuemart] Impossibile effettuare alcun modifiche dall'amministrazione Joomla 0
H Effettuare il controllo dei campi di un form e cambiare l' action dinamicamente Javascript 1
G php effettuare una connessione ssh o telnet ed inviare dei comandi PHP 3
C Effettuare il log out alla chiusura del browser PHP 3
M Non riesco ad effettuare l'upload Discussioni Varie 7
JellyBelly Effettuare GET tramite PHP PHP 2
S effettuare un controllo PHP 1
M www.mytcom.it per effettuare chiamate gratis in tutto il mondo senza limiti Presenta il tuo Sito 0
grottafelix Modifiche da effettuare: ricapitoliamo Supporto Mr.Webmaster 4
Shyson Codice wp-login non funziona PHP 2
L Problemi con il login PHP 2
L login e session PHP 4
A Problema login con Safari PHP 14
R Reinderizzamento dopo login PHP 2
C finestra popup dopo login PHP 2
L login con solo un codice PHP 3
Web93 PROBLEMA SITO WEB WORDPRESS - LOGIN DASHBOARD Programmazione 3
M Login Autenticazione Sviluppo app per Android 0
S [PHP] Stampa a video Nome e Cognome in seguito a login PHP 1
M [PHP] header (location..) non funzionante dopo login PHP 3
L [PHP] Visualizzare utente dopo login PHP 0
L [PHP] login con password_verify PHP 3
A HTML issues with creating a register and login page + general questions HTML e CSS 1
L [PHP] login con varie entrate PHP 3
L [PHP] login con password_verify - password_hash PHP 5
M [PHP] Problemi con il riconoscimento login. PHP 21
F [PHP] Login senza database PHP 3
F [php] sicurezza password form login PHP 2
M [PHP] Metodo migliore per fare login a un DB Mysql PHP 1
F Problema con pagine login in PHP PHP 2
Y [PHP] Errore di login dopo aver inserito Codice AdSense PHP 0
M [PHP] Problemi con login facebook PHP 0
Shyson [WordPress] Nascondere link del Login WordPress 2
W [PHP] Login sicuro al web Service SOAP PHP 20
P [PHP] Limitare login ad un solo utente per volta PHP 12
L [PHP] login e protezione pagine con session PHP 3
L [PHP] login con la classe medoo.in PHP 5
I [PHP] [Javascript] login da smartphone a web PHP 3

Discussioni simili