CERCA
PER MODELLO
FullScreen Chatbox! :)

Utente del giorno: AI0LIA con ben 20 Thanks ricevuti nelle ultime 24 ore
Utente della settimana: AI0LIA con ben 161 Thanks ricevuti negli ultimi sette giorni
Utente del mese: Bokonon con ben 395 Thanks ricevuti nell'ultimo mese

Pagina 1 di 2 12 ultimoultimo
Visualizzazione dei risultati da 1 a 10 su 14
Discussione:

Non riesco a connettermi ad un database online

  1. #1
    Androidiano
    Registrato dal
    Jul 2012
    Messaggi
    77
    Thanks
    0
    Thanked 0 Times in 0 Posts
    Predefinito

    Non riesco a connettermi ad un database online

    Ciao ragazzi, ho un problema da risolvere. Ho scaricato un'app che faceva una connessione ad un database. Ho inserito i dati del mio database e l'app va, stampandomi il giusto risultato della mia query.

    Ho provato a rifare l'app, apparentemente identica a quella che ho scaricato. Dico apparentemente xkŔ in realtÓ a me non va. Vi elenco i miei files

    activity_main.xml
    XML:
    <RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:tools="http://schemas.android.com/tools"
    android:layout_width="match_parent"
    android:layout_height="match_parent" >

    <TextView
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:layout_centerHorizontal="true"
    android:layout_centerVertical="true"
    tools:context=".MainActivity"
    android:id="@+id/textView1" />

    </RelativeLayout>


    MainActivity.java
    Java:

    package com.db.connection;


    import android.os.Bundle;
    import android.app.Activity;
    import android.view.Menu;
    import android.widget.TextView;

    public class MainActivity extends Activity {

    @Override
    public void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main);

    TextView res = (TextView) findViewById(R.id.textView1);
    String ris = sendQuery.send("SELECT pag_nome FROM pagine_data WHERE pag_id=1");
    res.append(ris);
    }

    @Override
    public boolean onCreateOptionsMenu(Menu menu) {
    getMenuInflater().inflate(R.menu.activity_main, menu);
    return true;
    }
    }



    la classe che richiama JSON
    Codice PHP:
    package com.db.connection;

    import java.io.BufferedReader;
    import java.io.InputStream;
    import java.io.InputStreamReader;
    import java.util.ArrayList;

    import org.apache.http.HttpEntity;
    import org.apache.http.HttpResponse;
    import org.apache.http.NameValuePair;
    import org.apache.http.client.HttpClient;
    import org.apache.http.client.entity.UrlEncodedFormEntity;
    import org.apache.http.client.methods.HttpPost;
    import org.apache.http.impl.client.DefaultHttpClient;
    import org.apache.http.message.BasicNameValuePair;

    import android.util.Log;

    public class 
    sendQuery {
        
    /////////// Public method to send Query ///////////
        
    public static String send(String query) {
            
    String result "0";
            
    InputStream is null;

            
    //the query to send
            
    ArrayList<NameValuePairquerySend = new ArrayList<NameValuePair>();

            
    querySend.add(new BasicNameValuePair("querySend",query));

            
    //http post
            
    try{
                
    HttpClient httpclient = new DefaultHttpClient();
                
    HttpPost httppost = new HttpPost("http://www.ilmiosito.com/query.php");
                
    httppost.setEntity(new UrlEncodedFormEntity(querySend));
                
    HttpResponse response httpclient.execute(httppost);
                
    HttpEntity entity response.getEntity();
                
    is entity.getContent();
            }catch(
    Exception e){
                
    Log.e("log_tag""Error in http connection "+e.toString());
            }

            
    //convert response to string
            
    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("log_tag""Error converting result: "+e.toString());
            }

            
    Log.i("SendQUERY"result);
            return 
    result;
        }

    e infine il mio php query.php
    Codice PHP:
        <?php
         
        mysql_connect
    ("***","***","***");
    mysql_select_db("***");
        
    $query $_REQUEST['querySend'];

    $sql=mysql_query($query);
    while(
    $row=mysql_fetch_assoc($sql))
    $output[]=$row;
    print(
    json_encode($output));
    mysql_close();
    ?>
    .

    chiaramente ho dato il permesso INTERNET nell' AndroidManifest

    spero riusciate a risolvere almeno voi!

  2.  
  3. #2
    Senior Droid
    Registrato dal
    Mar 2012
    Messaggi
    326
    Smartphone
    Samsung Galaxy S2
    Thanks
    0
    Thanked 24 Times in 23 Posts
    Predefinito

    Posta il logcat perchŔ senn˛ difficilmente si pu˛ capire cos'Ŕ!

    codice:
    HttpPost httppost = new HttpPost("http://www.ilmiosito.com/query.php");
    Su questo pezzo di codice hai messo adesso "http://www.ilmiosito.com/query.php" oppure ti sei dimenticato di cambiare l'indirizzo?
    Federico Palmieri
    mailto: superfect@hotmail.it
    Gestione Clienti Premium -> QUI

  4. #3
    Androidiano
    Registrato dal
    Jul 2012
    Messaggi
    77
    Thanks
    0
    Thanked 0 Times in 0 Posts
    Predefinito

    Stasra ti posto il log che ora sono a lavoro!no no,chiaramente quella parte lÓ l ho cambiata qui apposta!grazie mille cmq


    Inviato dal mio GT-P3100 usando Androidiani App

  5. #4
    Androidiano
    Registrato dal
    Jul 2012
    Messaggi
    77
    Thanks
    0
    Thanked 0 Times in 0 Posts
    Predefinito

    12-18 23:17:43.423: E/Trace(697): error opening trace file: No such file or directory (2)
    12-18 23:17:44.361: E/log_tag(697): Error in http connection android.os.NetworkOnMainThreadException
    12-18 23:17:44.361: E/log_tag(697): Error converting result: java.lang.NullPointerException


    perdonami il ritardo,spero possa capirci pi¨ di me!!!

  6. #5
    Androidiano
    Registrato dal
    Jul 2012
    Messaggi
    77
    Thanks
    0
    Thanked 0 Times in 0 Posts
    Predefinito

    Nessuno pu˛ aiutarmi?


    Inviato dal mio GT-P3100 usando Androidiani App

  7. #6
    Senior Droid
    Registrato dal
    Mar 2012
    Messaggi
    326
    Smartphone
    Samsung Galaxy S2
    Thanks
    0
    Thanked 24 Times in 23 Posts
    Predefinito

    L'errore Ŕ dato dal fatto che esegui una richiesta web all'interno del thread principale e genera l'eccezione che hai postato. Cercala su google e eicuramente troverai la soluzione, se non trovi nulla cerca il funzionamebto degli asynctask!


    Inviato dal mio GT-I9100 usando Androidiani App
    Federico Palmieri
    mailto: superfect@hotmail.it
    Gestione Clienti Premium -> QUI

  8. #7
    Androidiano
    Registrato dal
    Jul 2012
    Messaggi
    77
    Thanks
    0
    Thanked 0 Times in 0 Posts
    Predefinito

    allora..ho trovato due soluzioni...

    la prima dice di inserire questo codice prima della query
    Java:

    StrictMode.ThreadPolicy policy = new
    StrictMode.ThreadPolicy.Builder()
    .permitAll().build();
    StrictMode.setThreadPolicy(policy);

    ma ho letto che non Ŕ una buona soluzione ma Ŕ valida solo per lo sviluppo.
    L'altra soluzione prevede l'utilizzo della classe AsyncTask
    Java:

    import java.io.IOException;

    import org.apache.http.HttpResponse;
    import org.apache.http.client.ClientProtocolException;
    import org.apache.http.client.methods.HttpGet;
    import org.apache.http.impl.client.DefaultHttpClient;

    import android.app.Activity;
    import android.os.AsyncTask;
    import android.os.Bundle;
    //import android.os.StrictMode;
    import android.util.Log;

    public class HttpClientActivity extends Activity {
    /** Called when the activity is first created. */
    @Override
    public void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.main);

    // StrictMode.ThreadPolicy policy = new StrictMode.ThreadPolicy.Builder()
    // .permitAll().build();
    // StrictMode.setThreadPolicy(policy);

    // connect();

    new Connection().execute();

    }

    private class Connection extends AsyncTask {

    @Override
    protected Object doInBackground(Object... arg0) {
    connect();
    return null;
    }

    }

    private void connect() {
    try {
    DefaultHttpClient client = new DefaultHttpClient();
    HttpGet request = new HttpGet("http://www.google.com");
    HttpResponse response = client.execute(request);
    } catch (ClientProtocolException e) {
    Log.d("HTTPCLIENT", e.getLocalizedMessage());
    } catch (IOException e) {
    Log.d("HTTPCLIENT", e.getLocalizedMessage());
    }
    }

    }


    ma in questo caso...come stampo a video i risultati?!essendo novello in java non ho chiaro come fare...

  9. #8
    Senior Droid
    Registrato dal
    Mar 2012
    Messaggi
    326
    Smartphone
    Samsung Galaxy S2
    Thanks
    0
    Thanked 24 Times in 23 Posts
    Predefinito

    nel metodo "onPostExecute" di cui devi fare l'ovveride nell'AsyncTask!

    Questo metodo restituisce il controllo al thread principale, quindi puoi effettuare tutti gli aggiornamenti grafici che ti interessano!
    Federico Palmieri
    mailto: superfect@hotmail.it
    Gestione Clienti Premium -> QUI

  10. #9
    Androidiano
    Registrato dal
    Jul 2012
    Messaggi
    77
    Thanks
    0
    Thanked 0 Times in 0 Posts
    Predefinito

    riusciresti a spiegarmi come gentilmente?!

  11. #10
    Senior Droid
    Registrato dal
    Mar 2012
    Messaggi
    326
    Smartphone
    Samsung Galaxy S2
    Thanks
    0
    Thanked 24 Times in 23 Posts
    Predefinito

    codice:
    private class Connection extends AsyncTask<Void, Void, HttpResponse> {
    
     
    
            @Override
    
            protected HttpResponse doInBackground(Void... unused) {
    
                return connect();
    
            }
    
         @Override
    
            protected void onPostExecute(HttpResponse arg0) {
    
    
            //qui puoi fare tutto ci˛ che vuoi con la risposta http e aggiornare la tua UI
            //Stai attento a non effettuare nuovamente operazioni in questo punto che richiedano la connessione ad internet perchŔ senn˛ otterresti lo stesso errore!!!
     
    
            }
    
        }
    dove connect() sarÓ:


    codice:
     private HttpResponse connect() {
            try {
                DefaultHttpClient client = new DefaultHttpClient();
                HttpGet request = new HttpGet("http://www.google.com");
                HttpResponse response = client.execute(request);
                return response;
            } catch (ClientProtocolException e) {
                Log.d("HTTPCLIENT", e.getLocalizedMessage());
            } catch (IOException e) {
                Log.d("HTTPCLIENT", e.getLocalizedMessage());
            }
        }
        return null;
    }

    Spero ti sia utile!
    Ultima modifica di fedestylah; 28-12-12 a 11:30
    Federico Palmieri
    mailto: superfect@hotmail.it
    Gestione Clienti Premium -> QUI

Pagina 1 di 2 12 ultimoultimo

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •