Autore Topic: ricevere risposta da un post e metterla in un variabile globale  (Letto 741 volte)

Offline Ansem

  • Utente junior
  • **
  • Post: 107
  • Respect: 0
    • Mostra profilo
  • Dispositivo Android:
    HTC HD2
  • Sistema operativo:
    4.0.4
ricevere risposta da un post e metterla in un variabile globale
« il: 06 Aprile 2012, 16:29:50 CEST »
0
Gente come potete immaginare di java conosco davvero poco. Venendo da pascal la gestione delle variabili globali in particolare faccio fatica a capirla :/
vorrei quindi chiedervi due cose: io ho creato l'oggetto per inviare un post,ma non ho poi capito come fare per salvarmi la risposta e poi poterla utilizzare da altre parti.
Qua c'è l'oggetto per l'invio del post:
Codice: [Seleziona]
public void postData() {
               
                        //assegnazione a delle variabili delle textview del main
                        TextView txtEmail= (TextView) findViewById(R.id.txtEmail);
                        TextView txtPassword= (TextView) findViewById(R.id.txtPassword);
                        //converto in una stringa per poterle utilizzare con il record
                        String sEmail = txtEmail.getText().toString();
                        String sPass = txtPassword.getText().toString();
                       
                        // creo un nuovo HttpClient e Post Header
                        HttpClient httpclient = new DefaultHttpClient();
                        HttpPost httppost = new HttpPost("http://www.agnese.homelinux.com/login");
               
                        try {
                                //creazione record da inviare
                                List<NameValuePair> postDati = new ArrayList<NameValuePair>(3);
                                postDati.add(new BasicNameValuePair("email",sEmail));
                                postDati.add(new BasicNameValuePair("pass",sPass));
                                postDati.add(new BasicNameValuePair("tipo","app"));
                                httppost.setEntity(new UrlEncodedFormEntity(postDati));

                                // Execute HTTP Post Request
                                HttpResponse response = httpclient.execute(httppost);
                       
                        } catch (ClientProtocolException e) {
                       
                        } catch (IOException e) {
                   
                        }
                }
                 

qui c'è l'oggetto per la ricezione della risposta:
Codice: [Seleziona]
public String risposta(InputStream is) throws IOException {
                        String s = "";
                        String line = "";
               
                        // creo un buffer
                        BufferedReader rd = new BufferedReader(new InputStreamReader(is));
               
                        // leggo la risposta fino alla fine
                        while ((line = rd.readLine()) != null) { s += line; }
                        // Return full string
                        return s;
                }

ora il mio scopo è questo: in base alla risposta devo passare ad un'altra activity,oppure dare un messaggio di errore.
Qualcuno mi può spiegare come posso fare? :(
« Ultima modifica: 06 Aprile 2012, 16:40:04 CEST da Ansem »

Offline Ansem

  • Utente junior
  • **
  • Post: 107
  • Respect: 0
    • Mostra profilo
  • Dispositivo Android:
    HTC HD2
  • Sistema operativo:
    4.0.4
Re:ricevere risposta da un post e metterla in un variabile globale
« Risposta #1 il: 07 Aprile 2012, 16:00:35 CEST »
0
Nessuno mi sa spiegare come fare? io vorrei creare una procedura(chiamiamola "connessione") che si attivi quando tappo su un pulsante.
La procedura dovrebbe fare tramite postData l'invio del post,poi tramite risposta ricevere la risposta,e poi controllare cosa c'è scritto nella risposta.
nessuno mi sa aiutare spiegandomi come devo fare la procedura "connessione"?

Offline djdedo

  • Utente normale
  • ***
  • Post: 209
  • Respect: +15
    • Mostra profilo
  • Dispositivo Android:
    Galaxy S2
Re:ricevere risposta da un post e metterla in un variabile globale
« Risposta #2 il: 07 Aprile 2012, 16:41:03 CEST »
+1
Ciao, vedo che hai già scritto i metodi per interagire con una pagina web attaverso una connessione http quindi non sto capendo che problemi stai avendo.
Nel primo metodo tu instanzi una connessione http invii dei dati in post e leggi la risposta. Ora questa risposta deve essere elaborata e trasformata in stringa (in genere). Io modificherei il secondo metodo che hai scritto facendo accettare in ingresso una HttpResponse e leggere il contenuto così
Codice (Java): [Seleziona]
public String risposta(HttpResponse response) throws IOException {
                        String s = "";
                        String line = "";
                                        // creo un buffer
                       //BufferedReader rd = new BufferedReader(new InputStreamReader(is));
                       BufferedReader rd = new BufferedReader(new InputStreamReader(response.getEntity().getContent));                                         // leggo la risposta fino alla fine
                         while ((line = rd.readLine()) != null) {
                                     s += line;
                         }
                        // Return full string                        
                        return s;
                  }


Quindi modificare il primo metodo aggiungendo questo codice dopo il tuo


Codice (Java): [Seleziona]
// Execute HTTP Post Request
HttpResponse response = httpclient.execute(httppost);
// aggiungi questo
String r = risposta(response);
Poi di quella stringa r ci fai quello che vuoi, potresti farla ritornare dal metodo postData()
« Ultima modifica: 07 Aprile 2012, 16:44:46 CEST da djdedo »

Offline Ansem

  • Utente junior
  • **
  • Post: 107
  • Respect: 0
    • Mostra profilo
  • Dispositivo Android:
    HTC HD2
  • Sistema operativo:
    4.0.4
Re:ricevere risposta da un post e metterla in un variabile globale
« Risposta #3 il: 07 Aprile 2012, 18:07:39 CEST »
0
diciamo che le mie difficoltà sono con il linguaggio java,che ha una logica troppo differente dal pascal e altri linguaggi imperativi XD
Sono riuscito a capire le tue modifiche,però non ho capito una cosa:
Codice: [Seleziona]
String r = risposta(response);va ovviamente aggiunto all'interno del try,però non riesco a capire come fare a portare poi r fuori dal try, visto che non posso fare un return, e se dopo il try metto
Codice: [Seleziona]
return r;mi da errore dicendomi di creare la variabile r,quindi presumo che il metodo postData non veda le variabili all'interno del try :(

Offline djdedo

  • Utente normale
  • ***
  • Post: 209
  • Respect: +15
    • Mostra profilo
  • Dispositivo Android:
    Galaxy S2
Re:ricevere risposta da un post e metterla in un variabile globale
« Risposta #4 il: 07 Aprile 2012, 18:37:29 CEST »
+1
Esattamente quindi potresti inizializzarla prima del try così String r =null; poi se il try andrà bene ritornerà il contenuto della risposta mentre se va male qualcosa ritornerà null in sostanza

Offline Ansem

  • Utente junior
  • **
  • Post: 107
  • Respect: 0
    • Mostra profilo
  • Dispositivo Android:
    HTC HD2
  • Sistema operativo:
    4.0.4
Re:ricevere risposta da un post e metterla in un variabile globale
« Risposta #5 il: 12 Aprile 2012, 16:40:38 CEST »
0
Raga qualcuno mi sa dire come faccio a vedere su eclipse gli errori dell'IOException? ho provato a visualizzarli con un alert,ma poi non posso copiarli e sono scomodissimi da leggere :/

Offline djdedo

  • Utente normale
  • ***
  • Post: 209
  • Respect: +15
    • Mostra profilo
  • Dispositivo Android:
    Galaxy S2
Re:ricevere risposta da un post e metterla in un variabile globale
« Risposta #6 il: 13 Aprile 2012, 00:04:53 CEST »
0
Devi usare l'oggetto log