CERCA
PER MODELLO
FullScreen Chatbox! :)

Utente del giorno: carotix con ben 2 Thanks ricevuti nelle ultime 24 ore
Utente della settimana: 9mm con ben 9 Thanks ricevuti negli ultimi sette giorni
Utente del mese: 9mm con ben 34 Thanks ricevuti nell'ultimo mese

Pagina 3 di 4 primaprima 1234 ultimoultimo
Ultima pagina
Visualizzazione dei risultati da 21 a 30 su 39
Discussione:

Comunicazione client-server

Se questa discussione ti è stata utile, ti preghiamo di lasciare un messaggio di feedback in modo che possa essere preziosa in futuro anche per altri utenti come te!
  1. #21
    Baby Droid


    Registrato dal
    Nov 2012
    Località
    Valderice
    Messaggi
    24

    Ringraziamenti
    5
    Ringraziato 0 volte in 0 Posts
    Predefinito

    Quote Originariamente inviato da freebong Visualizza il messaggio
    Nella cartella di xampp o apache metti il tuo script in php o in quello che preferisci che riceve una richiesta (es una post dal client) e che si interfaccia con il db.
    il principio è simile a quello di un form html in cui fai una post, solo che la post invece del form lo la fa il client Android
    quindi se per esempio uso il metodo post, da android carico un url del tipo http://localhost/test.php?barcode=code...però non devo avere come risposta una pagina html ma dei dati dal database. come faccio?

  2.  
  3. #22
    Androidiano L'avatar di IlSocio


    Registrato dal
    Jul 2012
    Località
    Torino
    Messaggi
    62

    Ringraziamenti
    6
    Ringraziato 19 volte in 15 Posts
    Predefinito

    puoi usare json ad es. JSON - Wikipedia
    Ma a questo punto, imho, tanto vale usare la soluzione soap+webservice che ti è stata proposta inizialmente.

  4. Il seguente Utente ha ringraziato IlSocio per il post:

    xyzi (05-02-13)

  5. #23
    Senior Droid L'avatar di freebong


    Registrato dal
    Apr 2011
    Messaggi
    379

    Ringraziamenti
    13
    Ringraziato 28 volte in 27 Posts
    Predefinito

    Quote Originariamente inviato da xyzi
    Originariamente inviato da freebong
    Nella cartella di xampp o apache metti il tuo script in php o in quello che preferisci che riceve una richiesta (es una post dal client) e che si interfaccia con il db.
    il principio è simile a quello di un form html in cui fai una post, solo che la post invece del form lo la fa il client Android
    quindi se per esempio uso il metodo post, da android carico un url del tipo http://localhost/test.php?barcode=code...però non devo avere come risposta una pagina html ma dei dati dal database. come faccio?

    Per tornare i dati puoi usare la classe json.
    In internet trovi tanti esempi


    Inviato dal mio HTC Desire usando Androidiani App

  6. Il seguente Utente ha ringraziato freebong per il post:

    xyzi (05-02-13)

  7. #24
    Baby Droid


    Registrato dal
    Nov 2012
    Località
    Valderice
    Messaggi
    24

    Ringraziamenti
    5
    Ringraziato 0 volte in 0 Posts
    Predefinito

    Ragazzi, innanzitutto ringrazio tutti per le possibili soluzioni proposte.
    Effettivamente ragionandoci un pò, penso che la soluzione iniziale soap+webservice sia la più praticabile. anche perchè quella di creare una socket era solo un suggerimento che mi è stato dato e non un imposizione... dunque penso che la via da seguire per creare questa simulazione tra il client e il server si quello dell'utilizzo della libreria KSOAP2. visto che mi sono accorto di essere veramente scarso vi sarei grato se mi aiutaste ad implementare questa parte.
    questa il codice dell'activity principale in cui integro la libreria zxing:

    codice:
    public class MainActivity extends Activity {
    
    	@Override
    	protected void onCreate(Bundle savedInstanceState) {
    		super.onCreate(savedInstanceState);
    		setContentView(R.layout.activity_main);
    	}
    	
    	public void doScan (View view) {
    		IntentIntegrator integrator = new IntentIntegrator(this);
    		integrator.initiateScan();
    	}
    	
    	public void onActivityResult (int requestCode, int resultCode, Intent intent) {
    		IntentResult scanResult = IntentIntegrator.parseActivityResult(requestCode, resultCode, intent);
    		if (scanResult != null) {
    			String barcode;
    			String format;
    			
    			barcode = scanResult.getContents();
    			format = scanResult.getFormatName();
    			
    			EditText etBarcode = (EditText) findViewById(R.id.etBarcode);
    			EditText etFormat = (EditText) findViewById(R.id.etFormat);
    			
    			etBarcode.setText(barcode);
    			etFormat.setText(format);
    			
    		}
    	}
    quello da fare ora è inviare la stringa "barcode" al server http://localhost/test.php tramite la libreria ksoap2.
    cmq devo creare uno script php che risponde alle richieste come ad esempio in un form html. giusto?

    EDIT: stavo cercando roba su internet e mi sto accorgendo che non avevo idea di cosa fosse un webservices! io so solo programmare in html e php!
    Ultima modifica di xyzi; 05-02-13 alle 16:45 - Motivo: edit

  8. #25
    Baby Droid


    Registrato dal
    Nov 2012
    Località
    Valderice
    Messaggi
    24

    Ringraziamenti
    5
    Ringraziato 0 volte in 0 Posts
    Predefinito

    da quanto ho capito non mi caca più nessuno.
    a livello informativo, volevo dirvi che ho risolto quasi del tutto (mi mancano gli ultimi accorgimenti) utilizzando una richiesta HTTP con il metodo POST e inviando i dati dal server al client tramite il formato JSON!

  9. #26
    Senior Droid L'avatar di freebong


    Registrato dal
    Apr 2011
    Messaggi
    379

    Ringraziamenti
    13
    Ringraziato 28 volte in 27 Posts
    Predefinito

    Quote Originariamente inviato da xyzi Visualizza il messaggio
    da quanto ho capito non mi caca più nessuno.
    a livello informativo, volevo dirvi che ho risolto quasi del tutto (mi mancano gli ultimi accorgimenti) utilizzando una richiesta HTTP con il metodo POST e inviando i dati dal server al client tramite il formato JSON!
    ma se ti abbiamo detto praticamente come farlo!! cosa volevi che ti scrivessimo il codice??
    Ciao!

  10. #27
    Baby Droid


    Registrato dal
    Nov 2012
    Località
    Valderice
    Messaggi
    24

    Ringraziamenti
    5
    Ringraziato 0 volte in 0 Posts
    Predefinito

    Quote Originariamente inviato da freebong Visualizza il messaggio
    ma se ti abbiamo detto praticamente come farlo!! cosa volevi che ti scrivessimo il codice??
    Ciao!
    bhe, forse si!

  11. #28
    Baby Droid


    Registrato dal
    Nov 2012
    Località
    Valderice
    Messaggi
    24

    Ringraziamenti
    5
    Ringraziato 0 volte in 0 Posts
    Predefinito

    Stavo provando l'activity che ho creato ma non riesco a capire perchè non funziona!!!
    L'errore che da è “Errore nella connessione http android.os.NetworkOnMainThreadException”!
    codice:
    public class HttpPostActivity extends Activity {
    
    	@Override
        public void onCreate(Bundle savedInstanceState) {
            super.onCreate(savedInstanceState);
    		setContentView(R.layout.activity_http_post);
     
            final TextView textviewDatiRicevuti = (TextView) findViewById(R.id.datiRicevuti);
     
            Button buttonInviaDati = (Button) findViewById(R.id.buttonInviaDati);
            buttonInviaDati.setOnClickListener(new View.OnClickListener() {
                public void onClick(View view) {
                    //invio richiesta
                    textviewDatiRicevuti.setText(inviaDati());
                }
            });
        }
     
        public String inviaDati(){
            String result = "";
            String stringaFinale = "";
            ArrayList<NameValuePair> nameValuePairs = new ArrayList<NameValuePair>();
            nameValuePairs.add(new BasicNameValuePair("bc","8076809535236"));
            InputStream is = null;
     
            //http post
            try{
                    HttpClient httpclient = new DefaultHttpClient();
                    HttpPost httppost = new HttpPost("http://10.0.2.2/supermercato/testp.php");
                    httppost.setEntity(new UrlEncodedFormEntity(nameValuePairs));
                    HttpResponse response = httpclient.execute(httppost);
                    HttpEntity entity = response.getEntity();
                    is = entity.getContent();
            }catch(Exception e){
                    Log.e("TEST", "Errore nella connessione http "+e.toString());
            }
            if(is != null){
                //converto la risposta in stringa
                try{
                        BufferedReader reader = new BufferedReader(new InputStreamReader(is,"iso-8859-1"),8);
                        StringBuilder sb = new StringBuilder();
                        String line = null;
                        while ((line = reader.readLine()) != null) {
                                sb.append(line + "\n");
                        }
                        is.close();
     
                        result=sb.toString();
                }catch(Exception e){
                        Log.e("TEST", "Errore nel convertire il risultato "+e.toString());
                }
     
                //parsing dei dati arrivati in formato json
                try{
                        JSONArray jArray = new JSONArray(result);
                        for(int i=0;i<jArray.length();i++){
                                JSONObject json_data = jArray.getJSONObject(i);
                                Log.i("TEST","prezzo: "+json_data.getDouble("prezzo")+
                                        ", categoria: "+json_data.getString("categoria")+
                                        ", descrizione: "+json_data.getInt("descrizione")
                                );
                                stringaFinale = json_data.getDouble("prezzo") + " " + json_data.getString("categoria") + " " + json_data.getInt("descrizione") + "\n\n";
                        }
                }
                catch(JSONException e){
                	Toast.makeText(getBaseContext(), "Prodotto non trovato!", Toast.LENGTH_LONG).show();
                }
            }
            else{//is è null e non ho avuto risposta
     
            }
     
            return stringaFinale;
        }
    }
    dove "bc"="8076809535236" è il codice a barre che invio al server.
    per simulare il sito, come già detto, ho usato xampp con le impostazioni predefinite e inserendo in "xampp\htdocs\supermercato" lo script "testp.php" che è:
    codice:
    <?php
    mysql_connect("localhost:3306","root","");
    mysql_select_db("supermercato");
     
    $q=mysql_query("SELECT prezzo,categoria,descrizione FROM prodotti WHERE barcode='".$_REQUEST['bc']."'");
    while($e=mysql_fetch_assoc($q))
            $output[]=$e;
     
    print(json_encode($output));
     
    mysql_close();
    ?>
    i passi che eseguo sono: far partire da xampp sia apache che mysql e quindi far partire l'activity dall'emulatore
    ovviamente ho anche inserito nel manifest il permesso di accedere ad internet.
    please help me!

  12. #29
    Androidiano L'avatar di IlSocio


    Registrato dal
    Jul 2012
    Località
    Torino
    Messaggi
    62

    Ringraziamenti
    6
    Ringraziato 19 volte in 15 Posts
    Predefinito

    il problema è appunto: NetworkOnMainThread
    ovvero, stai svolgendo delle operazioni di rete (HttpClient e roba varia) nel thread principale della ui... una pratica che non è piu' ammessa (per fortuna).
    le operazioni di comunicazione con la rete, le devi svolgere in un thread secondario (tramite un asynctask ad esempio)
    Ultima modifica di IlSocio; 08-02-13 alle 12:47

  13. #30
    Baby Droid


    Registrato dal
    Nov 2012
    Località
    Valderice
    Messaggi
    24

    Ringraziamenti
    5
    Ringraziato 0 volte in 0 Posts
    Predefinito

    Quote Originariamente inviato da IlSocio Visualizza il messaggio
    il problema è appunto: NetworkOnMainThread
    ovvero, stai svolgendo delle operazioni di rete (HttpClient e roba varia) nel thread principale della ui... una pratica che non è piu' ammessa (per fortuna).
    le operazioni di comunicazione con la rete, le devi svolgere in un thread secondario (tramite un asynctask ad esempio)
    ops, non ero a conoscenza di questo tipo di errore. grazie! dovrò cercare su internet anche questo asynctask!

Pagina 3 di 4 primaprima 1234 ultimoultimo
Ultima pagina

Tag per questa discussione

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire risposte
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Torna su
Privacy Policy