Autore Topic: Invio dati JSON da app Android al server per INSERT nel db remoto  (Letto 2248 volte)

Offline teopozzi

  • Utente junior
  • **
  • Post: 67
  • Respect: +1
    • Mostra profilo
0
Salve ho un problema quello che voglio fare è mandare alcuni dati Json di tipo String al server per poi fare un'Insert nel db. Come prima cosa mi sono creato la classe che prende le informazioni e le manda ad uno script php che avrà il compito di decodificare le informazioni e fare l'insert dentro al db.


Main:

Codice (Java): [Seleziona]
public class SendDataToServer extends Activity {
       
        String temp;
        String jsonText;
        public void onCreate(Bundle savedInstanceState) {
               
                JSONObject j = new JSONObject();
               
                try {
                        j.put("nome_utente", "test");
                        j.put("password", "test");
                        j.put("nome_reale", "test");
                        j.put("email", "test@test.it");
                                                                                       
                }catch(JSONException e){
                        e.printStackTrace();
                }
                try {
                        String url = "http://test.rimini.com/new_account.php";
                        Map<String, String> kvPairs = new HashMap<String, String>();
                        kvPairs.put("pippo", j.toString());
                        HttpResponse re = HTTPPoster.doPost(url, kvPairs);
                        temp = EntityUtils.toString(re.getEntity());
                } catch(ClientProtocolException e){
                        e.printStackTrace();
                }
                catch(IOException e){
                        e.printStackTrace();
                }      

                if (temp.compareTo("SUCCESS")== 0) {
                        Toast.makeText(SendDataToServer.this, "Sending complete!", Toast.LENGTH_LONG).show();
                }else{
                        Toast.makeText(SendDataToServer.this, "Sending incomplete!", Toast.LENGTH_LONG).show();
                }
               
        }
}

Di seguito posto anche lo script php che serve per decodificare le informazioni:

Codice: [Seleziona]
<?php

$json_a = json_decode(($_GET['pippo']));

echo($json_a);

/*$mail = $decoded['email'];
$pass = $decoded['password'];
$utente = $decoded['nome_utente'];
$reale = $decoded['nome_reale'];

$conn = mysql_connect('--------', '-----', '---------');
mysql_select_db('rntest',$conn);
if (!$conn) {
    die('Could not connect: ' . mysql_error());
}
$risultato = @mysql_query("INSERT INTO iscritti(nome_utente, password, nome_reale, email) VALUES ('$utente', '$pass','$reale','$mail')") or die('Errore: ' .mysql_error());*/

?>
alcune parti sono commentate perchè avevo gia visto che non prendendo i dati della stringa quindi non faceva la seconda parte quindi ho commentato e ho cominciato a vedere cosa stampava pippo.

Infine posto anche la classe con il metodo doPost che mi dice se l'operazione è andata a buon fine:

Codice (Java): [Seleziona]
public class HTTPPoster {
       
        public static HttpResponse doPost(String url, Map<String, String> kvPairs)throws ClientProtocolException, IOException {
                HttpClient httpclient = new DefaultHttpClient();
                HttpPost httppost = new HttpPost(url);
                if (kvPairs != null && kvPairs.isEmpty() == false) {
                        List<NameValuePair> nameValuePairs = new ArrayList<NameValuePair>(kvPairs.size());
                        String k, v;
                        Iterator<String> itKeys = kvPairs.keySet().iterator();
                        while (itKeys.hasNext()) {
                                k = itKeys.next();
                                v = kvPairs.get(k);
                                nameValuePairs.add(new BasicNameValuePair(k, v));
                        }
                        httppost.setEntity(new UrlEncodedFormEntity(nameValuePairs));
                }
                HttpResponse response;
                response = httpclient.execute(httppost);
                return response;
        }
}


Ho fatto il debug mille volte ma ho sempre lo stesso problema praticamente dentro a la variabile pippo nelo script facendo  $json_a = json_decode($_GET['pippo']); invece di esserci le informazioni non c'è niente, non ho nessun errore da parte di android ne in php. Qualcuno ha qualche consiglio o soluzione perchè sto diventando matto e ho provato tutto. Grazie in anticipo per le risposte...!!!!
« Ultima modifica: 27 Aprile 2011, 09:20:26 CEST da 7h38ugg3r, Reason: Ho aggiunto i tag di codice »

Offline 7h38ugg3r

  • Moderatore globale
  • Utente storico
  • *****
  • Post: 1200
  • Respect: +133
    • riccardofischetti
    • th38ugg3r
    • @7h38ugg3r
    • Mostra profilo
  • Dispositivo Android:
    Galaxy-S GT I-9000/ ASUS Eee Pad Transformer
  • Play Store ID:
    Riccardo Fischetti
  • Sistema operativo:
    OS X Lion / Linux Mint 11 (Katya)
Re:Invio dati JSON da app Android al server per INSERT nel db remoto
« Risposta #1 il: 27 Aprile 2011, 09:23:28 CEST »
+1
Se tu mandi i dati via POST, è normale che via GET non li trovi......
Prova a prenderli con
Codice: [Seleziona]
$json_a = json_decode(($_POST['pippo']));
7h38ugg3r<=>thebugger
Non conosci Java? Allora sei nel posto sbagliato!

http://www.androidpatterns.com/

Offline teopozzi

  • Utente junior
  • **
  • Post: 67
  • Respect: +1
    • Mostra profilo
Re:Invio dati JSON da app Android al server per INSERT nel db remoto
« Risposta #2 il: 27 Aprile 2011, 09:49:02 CEST »
0
Allora intanto ti ringrazio mille per la risposta è giorni che sto cercando di risolvere , ho provato come dici tu, adesso quanto ritorna dal metodo doPost va nel catch(IOException e) dicendomi java.net.UnknownHostException: test.rimini.com e ti posso assicurare che l'host è quello. e anche la stringa non viene presa, mentre se faccio il debug dentro la stringa c'è.

Offline teopozzi

  • Utente junior
  • **
  • Post: 67
  • Respect: +1
    • Mostra profilo
Re:Invio dati JSON da app Android al server per INSERT nel db remoto
« Risposta #3 il: 27 Aprile 2011, 09:55:21 CEST »
0
a posto ho risolto per l'errore di java, scusa madoevo settare una cossa sul cellulare.....

Offline teopozzi

  • Utente junior
  • **
  • Post: 67
  • Respect: +1
    • Mostra profilo
Re:Invio dati JSON da app Android al server per INSERT nel db remoto
« Risposta #4 il: 27 Aprile 2011, 09:59:37 CEST »
0
a posto funziona tutto ti ringrazio tantissimo

Offline 7h38ugg3r

  • Moderatore globale
  • Utente storico
  • *****
  • Post: 1200
  • Respect: +133
    • riccardofischetti
    • th38ugg3r
    • @7h38ugg3r
    • Mostra profilo
  • Dispositivo Android:
    Galaxy-S GT I-9000/ ASUS Eee Pad Transformer
  • Play Store ID:
    Riccardo Fischetti
  • Sistema operativo:
    OS X Lion / Linux Mint 11 (Katya)
Re:Invio dati JSON da app Android al server per INSERT nel db remoto
« Risposta #5 il: 27 Aprile 2011, 10:52:42 CEST »
0
^_^
7h38ugg3r<=>thebugger
Non conosci Java? Allora sei nel posto sbagliato!

http://www.androidpatterns.com/