Autore Topic: [Parsing JSON] Ricezione dati da PHP  (Letto 3651 volte)

Offline Kappa27

  • Nuovo arrivato
  • *
  • Post: 43
  • Respect: +2
    • kevvort
    • Mostra profilo
  • Dispositivo Android:
    Galaxy Tab
  • Sistema operativo:
    Windows 7 x64 - Ubuntu 10.10
[Parsing JSON] Ricezione dati da PHP
« il: 17 Febbraio 2011, 14:22:19 CET »
0
Salve a tutti,

ho un database online e grazie ad una pagina in php interrogo il database ed esporto la query in formato JSON. Fin qui tutto bene  :-P
Dopo aver consultato vari tutorials sia su questo forum che su altri siti penso che si debba fare ciò:

- Connettersi alla pagina PHP
- Inviare i parametri per la query
- Trattare i dati JSON ricevuti in modo da esser compatibili con Android
- Gestire il JSON nell'applicazione

Per risolvere i primi due punti dovrebbe bastare creare, correggetemi se sbaglio, un inputStream con questo codice:
Codice (Java): [Seleziona]
            ArrayList<NameValuePair> nameValuePairs = new ArrayList<NameValuePair>();
            nameValuePairs.add(new BasicNameValuePair("nome","Pippo"));
       
            HttpClient httpclient = new DefaultHttpClient();
            HttpPost httppost = new HttpPost("http://www.pippo.org/paginaphp.php");
            httppost.setEntity(new UrlEncodedFormEntity(nameValuePairs));
            HttpResponse response = httpclient.execute(httppost);
            HttpEntity entity = response.getEntity();
            InputStream is = entity.getContent();

Fatto ciò non so più che fare, mi servirebbe capire come trattare l'InputStream is in modo da ricavarne i dati che ricevo  :-)

Ecco qui di seguito la pagina PHP che riceve ed invia i dati:
Codice: [Seleziona]
<?php
mysql_connect("localhost","root","");
mysql_select_db("my_database");
 
$query=mysql_query("SELECT * FROM people WHERE p_nome LIKE'".$_REQUEST['nome']."'");
while($row=mysql_fetch_assoc($query))
        $output[]=$row;
 
print(json_encode($output));
 
mysql_close();
?>

Grazie!


Offline Ricky`

  • Amministratore
  • Utente storico
  • *****
  • Post: 3489
  • Respect: +506
    • Github
    • Google+
    • rciovati
    • Mostra profilo
Re:[Parsing JSON] Ricezione dati da PHP
« Risposta #1 il: 17 Febbraio 2011, 14:41:19 CET »
0
Cambia l'ultima parte del tuo codice in:       
Codice (Java): [Seleziona]
        ResponseHandler<String> responseHandler=new BasicResponseHandler();
        String responseBody = httpclient.execute(httppost, responseHandler);
        JSONObject response=new JSONObject(responseBody);

Poi puoi lavorare con i metodi che trovi nei tutorial presenti nel forum.

Offline Kappa27

  • Nuovo arrivato
  • *
  • Post: 43
  • Respect: +2
    • kevvort
    • Mostra profilo
  • Dispositivo Android:
    Galaxy Tab
  • Sistema operativo:
    Windows 7 x64 - Ubuntu 10.10
Re:[Parsing JSON] Ricezione dati da PHP
« Risposta #2 il: 17 Febbraio 2011, 15:17:32 CET »
0
OK, adesso sono riuscito a fare tutto! Mi manca solo una cosa:

- Invio dati alla pagina

Il problema penso che sia qui:
Codice (Java): [Seleziona]
ArrayList<NameValuePair> nameValuePairs = new ArrayList<NameValuePair>();
           [color=red] nameValuePairs.add(new BasicNameValuePair("nome","Pippo"));[/color]
       
            HttpClient httpclient = new DefaultHttpClient();
            HttpPost httppost = new HttpPost("http://www.pippo.org/paginaphp.php");
            httppost.setEntity(new UrlEncodedFormEntity(nameValuePairs));
            [color=orange]HttpResponse response = httpclient.execute(httppost);[/color]
            HttpEntity entity = response.getEntity();
            InputStream is = entity.getContent();

La parte in rosso dice in sostanza come si chiama il campo che invio(nome) e il suo valore (pippo)

La parte in arancione dice che passo i dati tramite il metodo post, però nella pagina PHP:
Codice: [Seleziona]
<?php
mysql_connect("localhost","root","");
mysql_select_db("my_database");
 
$query=mysql_query("SELECT * FROM people WHERE p_nome LIKE'".[b][color=orange]$_REQUEST['nome'][/color][/b]."'");
while($row=mysql_fetch_assoc($query))
        $output[]=$row;
 
print(json_encode($output));
 
mysql_close();
?>

Uso la $_REQUEST, per sicurezza ho provato ad usare la $_POST["nome"] ma non è cambiato nulla, ovvero la risposta è "null". Qualche idea?


Offline Kappa27

  • Nuovo arrivato
  • *
  • Post: 43
  • Respect: +2
    • kevvort
    • Mostra profilo
  • Dispositivo Android:
    Galaxy Tab
  • Sistema operativo:
    Windows 7 x64 - Ubuntu 10.10
Re:[Parsing JSON] Ricezione dati da PHP
« Risposta #3 il: 17 Febbraio 2011, 15:45:17 CET »
0
Scusate per il doppio post ma ho risolto  ;-)

A presto condividerò in un mini-tutorial ciò che ho imparato oggi!

Grazie per l'aiuto alla prossima  :-P

Offline android123

  • Nuovo arrivato
  • *
  • Post: 10
  • Respect: 0
    • Mostra profilo
  • Dispositivo Android:
    android sdk emulator
  • Sistema operativo:
    Mac Os X
Re:[Parsing JSON] Ricezione dati da PHP
« Risposta #4 il: 11 Aprile 2011, 13:02:49 CEST »
0
ciao,
potresti postare il codice con il quale hai risolto?
Grazie!

Offline digitalxp

  • Nuovo arrivato
  • *
  • Post: 1
  • Respect: 0
    • Mostra profilo
  • Dispositivo Android:
    IN1001 e LG Optimus one P5000
  • Sistema operativo:
    Windows 7, Windows XP
Re:[Parsing JSON] Ricezione dati da PHP
« Risposta #5 il: 10 Maggio 2011, 14:05:54 CEST »
0
Ciao mi interessava molto una guida su php, mysql e android..... avete qualcosa?!

Offline Ricky`

  • Amministratore
  • Utente storico
  • *****
  • Post: 3489
  • Respect: +506
    • Github
    • Google+
    • rciovati
    • Mostra profilo
Re: Re:[Parsing JSON] Ricezione dati da PHP
« Risposta #6 il: 10 Maggio 2011, 21:37:58 CEST »
0
Ciao mi interessava molto una guida su php, mysql e android..... avete qualcosa?!

Noi no ma google si :)

Sent from my HTC Desire

Offline Auron

  • Utente junior
  • **
  • Post: 104
  • Respect: +1
    • Mostra profilo
  • Dispositivo Android:
    Motorola Milestone Android 2.2.1
  • Sistema operativo:
    Windows
Re:[Parsing JSON] Ricezione dati da PHP
« Risposta #7 il: 29 Maggio 2011, 21:58:07 CEST »
0
Scusate per il doppio post ma ho risolto  ;-)

A presto condividerò in un mini-tutorial ciò che ho imparato oggi!

Grazie per l'aiuto alla prossima  :-P


Mi faresti capire come hai risolto? Perchè ho il tuo stesso problema. Ho scritto il codice java, il file PHP con la SELECT e vorrei visualizzare il risultato non in formato JSON ma avere i risultati effettivi, valore per valore.


Cambia l'ultima parte del tuo codice in:       
Codice (Java): [Seleziona]
        ResponseHandler<String> responseHandler=new BasicResponseHandler();
        String responseBody = httpclient.execute(httppost, responseHandler);
        JSONObject response=new JSONObject(responseBody);

Poi puoi lavorare con i metodi che trovi nei tutorial presenti nel forum.


Ma questa modifica invece? la variabile "response" rimane inutilizzata...come la gestisco poi?
È stata trovata una soluzione al tuo problema?Evidenzia il post più utile premendo . È un ottimo modo per ringraziare chi ti ha aiutato ;-)

Offline neo2284

  • Nuovo arrivato
  • *
  • Post: 21
  • Respect: 0
    • Mostra profilo
Re:[Parsing JSON] Ricezione dati da PHP
« Risposta #8 il: 18 Ottobre 2011, 12:24:05 CEST »
0
Ciao potresti gentilmente postare un esempio completo? non riesco a trovare nulla in rete e siccome mi sembrqa che il tuo esempio potrebbe funzionare vorrei gentilmente vedere come hai risolto. Grazie 100 in anticipo

Offline Luigi.Arena

  • Utente senior
  • ****
  • Post: 616
  • DACIA DUSTER 4X4 SUPER
  • Respect: +56
    • Mostra profilo
    • ArenaWebTest
  • Dispositivo Android:
    epad m009
  • Play Store ID:
    Luigi Arena
  • Sistema operativo:
    Windows 7
Re: Re:[Parsing JSON] Ricezione dati da PHP
« Risposta #9 il: 18 Ottobre 2011, 21:35:31 CEST »
0
È stata trovata una soluzione al tuo problema?Evidenzia il post più utile premendo . È un ottimo modo per ringraziare chi ti ha aiutato .

Offline Auron

  • Utente junior
  • **
  • Post: 104
  • Respect: +1
    • Mostra profilo
  • Dispositivo Android:
    Motorola Milestone Android 2.2.1
  • Sistema operativo:
    Windows
Re:[Parsing JSON] Ricezione dati da PHP
« Risposta #10 il: 20 Ottobre 2011, 17:12:20 CEST »
0
Parlano tutti di parsing tramite Client....Ma se dovessi farlo dal Server? E' possibile? Così risparmio lavoro inutile al Client che sicuramente sarà meno potente di un Server. Che ne dite?
È stata trovata una soluzione al tuo problema?Evidenzia il post più utile premendo . È un ottimo modo per ringraziare chi ti ha aiutato ;-)

Offline Luigi.Arena

  • Utente senior
  • ****
  • Post: 616
  • DACIA DUSTER 4X4 SUPER
  • Respect: +56
    • Mostra profilo
    • ArenaWebTest
  • Dispositivo Android:
    epad m009
  • Play Store ID:
    Luigi Arena
  • Sistema operativo:
    Windows 7
Re:[Parsing JSON] Ricezione dati da PHP
« Risposta #11 il: 20 Ottobre 2011, 17:20:41 CEST »
0
Ma i dati devi utilizzarli sul client(android)perciò ti serve fare un parse sulla stringa jason che ti ritorna il server.
Se fai il parse sul server poi cosa restituisci al client ?
È stata trovata una soluzione al tuo problema?Evidenzia il post più utile premendo . È un ottimo modo per ringraziare chi ti ha aiutato .

Offline Auron

  • Utente junior
  • **
  • Post: 104
  • Respect: +1
    • Mostra profilo
  • Dispositivo Android:
    Motorola Milestone Android 2.2.1
  • Sistema operativo:
    Windows
Re:[Parsing JSON] Ricezione dati da PHP
« Risposta #12 il: 21 Ottobre 2011, 11:28:22 CEST »
0
Bè è comodo se la risposta fosse un boolean oppure una stringa sola da non parsare più.

Se per esempio fai un login e passi user e password, fai controllare al server via DBMS il risultato della query che ti dirà se puoi accedere oppure no. Nel caso in cui hai bisogno di più dati (quindi creare liste o tabelle) il parsing lo fai dal Client.

Stavo facendo un pò di test su questo genere di cose, ma non riesco a far comunicare con il server di Glassfish sfruttando le pagine PHP (funziona solo se le uso via Apache nella cartella di default htdocs (localhost) ). Ho voluto in alternativa provare con le Servlet, ma il problema è differente, cioè non capisco come chiamar le funzioni delle Servlet dal Client Android.

Ovvero l'obiettivo è quello di far fare le query al server tramutarle in Json, inviarle al Client Android così che possa fare il Parsing del risultato.
« Ultima modifica: 21 Ottobre 2011, 11:37:47 CEST da stefanoadsl »
È stata trovata una soluzione al tuo problema?Evidenzia il post più utile premendo . È un ottimo modo per ringraziare chi ti ha aiutato ;-)

Offline Luigi.Arena

  • Utente senior
  • ****
  • Post: 616
  • DACIA DUSTER 4X4 SUPER
  • Respect: +56
    • Mostra profilo
    • ArenaWebTest
  • Dispositivo Android:
    epad m009
  • Play Store ID:
    Luigi Arena
  • Sistema operativo:
    Windows 7
Re:[Parsing JSON] Ricezione dati da PHP
« Risposta #13 il: 21 Ottobre 2011, 11:40:48 CEST »
0
Citazione
Bè è comodo se la risposta fosse un boolean oppure una stringa sola da non parsare più.
Non lo vedo fattibile, il parser è comunque da fare sui dati ricevuti dal server per utilizzarli poi nel client.

Citazione
Ovvero l'obiettivo è quello di far fare le query al server tramutarle in Json, inviarle al Client Android così che possa fare il Parsing del risultato.
Infatti funziona così.Nel forum dovrebbe esserci un tutorial su questo argomento, prova ad effettuare una ricerca.
È stata trovata una soluzione al tuo problema?Evidenzia il post più utile premendo . È un ottimo modo per ringraziare chi ti ha aiutato .

Offline Auron

  • Utente junior
  • **
  • Post: 104
  • Respect: +1
    • Mostra profilo
  • Dispositivo Android:
    Motorola Milestone Android 2.2.1
  • Sistema operativo:
    Windows
Re:[Parsing JSON] Ricezione dati da PHP
« Risposta #14 il: 21 Ottobre 2011, 11:53:16 CEST »
0
Infatti funziona così.Nel forum dovrebbe esserci un tutorial su questo argomento, prova ad effettuare una ricerca.

Ma io ho già risolto questo problema, infatti come ho scritto, se lascio le pagine PHP nella cartella di Apache funziona tutto perfettamente. Dato che sto creando un applicazione che non servirà a me ma ad un'aziendina, l'obiettivo era quello di tenere un server Java che dialogasse con i vari dispositivi mobili Android. Se mantengo l'opzione "pagine PHP" come risolvo il problema di spostare tutto il lavoro non più dal mio pc? E se invece di usare PHP come dicevo prima usassi la tecnologia RESTWebService con Servlet e JSP è fattibile?
È stata trovata una soluzione al tuo problema?Evidenzia il post più utile premendo . È un ottimo modo per ringraziare chi ti ha aiutato ;-)