Visualizzazione dei risultati da 1 a 10 su 10
  1. #1

    L'applicazione appena la avvii si blocca in modo anomalo dopo l'aggiunta dell'asynctask

    codice:
    package aa.slider_2;
    
    import android.support.v7.app.AppCompatActivity;
    import android.os.Bundle;
    import android.view.View.OnClickListener;
    import android.view.View;
    import java.net.HttpURLConnection;
    import java.net.MalformedURLException;
    import java.net.URL;
    import android.widget.Button;
    import android.widget.EditText;
    import android.content.Intent;
    import android.app.Activity;
    import java.io.IOException;
    import java.io.*;
    import java.net.URLEncoder;
    import android.app.AlertDialog;
    import android.content.DialogInterface;
    import android.os.AsyncTask;
    import android.widget.Toast;
    
    //ricorda che quando implementi onclicklistener devi richiamare obbligatoriamente il metodo unclick()
    public class MainActivity extends Activity implements OnClickListener {
    
        @Override
        protected void onCreate(Bundle savedInstanceState) {
            super.onCreate(savedInstanceState);
            setContentView(R.layout.activity_main);
    //------------------------------------------------------------------------------------------
    //metto listener il bottone
            final Button btn_accedi = (Button) findViewById(R.id.btn_accedi);
            btn_accedi.setOnClickListener(this);
        }
        final EditText email = (EditText) findViewById(R.id.email_box);
        final EditText password = (EditText) findViewById(R.id.psw_box);
    //-------------------------------------------------------------------------------------
    // recuperare il testo inserito dall'utente
        String post_email_1 = email.getText().toString();
        String post_psw_1 = password.getText().toString();
    
        private class InvioDati extends AsyncTask<String, Void, String> {
    
            @Override
            protected String doInBackground(String... url) {
    // azioni di invio
                String risultato = "";
                try {
    // codifico le coppie di dati da inviare
                    String post_email_2 = URLEncoder.encode("post_email", "UTF-8") + "=" + URLEncoder.encode(post_email_1, "UTF-8");
                    String post_psw_2 = URLEncoder.encode("post_password", "UTF-8") + "=" + URLEncoder.encode(post_psw_1, "UTF-8");
    
    //SCELGO DOVE URL E INZIO LA CONNESIONE
                    String Urls = url.toString();
                    URL paginaURL = new URL(Urls);
                    HttpURLConnection client = (HttpURLConnection) paginaURL.openConnection();
    
    // se devo inviare il dato in POST
                    client.setDoOutput(true);
                    client.setChunkedStreamingMode(0);
    
    // scrivo nello stream di uscita
                    OutputStreamWriter wr = new OutputStreamWriter(client.getOutputStream());
                    wr.write(post_email_2 + "&" + post_psw_2);
                    wr.flush();
                    wr.close();
                    risultato = "si";
    
                } catch (Exception e) {
                    risultato = "no";
                }
                return risultato;
            }
    
            @Override
            protected void onPostExecute(String result) {
    
                if (result == "si") {
                    Toast.makeText(getApplicationContext(), "si", Toast.LENGTH_SHORT).show();
    
                } else {
                    Toast.makeText(getApplicationContext(), "no", Toast.LENGTH_SHORT).show();
                }
    
            }
        }
    
        public void onClick(View v) {
    // TODO Auto-generated method stub
            switch (v.getId()) {
                case R.id.btn_accedi:
                    String url = "https://www.malebee.cloud/webservice/log-in/log.php";
                    new InvioDati().execute(url);
    
    
                    break;
    
    
            }
        }
    }
    Ultima modifica di LeleFT; 30-03-2017 a 12:21 Motivo: Sistemato il codice

  2. #2
    ciao!

    posta l'errore che ottieni!

    PS: il codice sarebbe meglio lo mettessi tra i tag appositi, così non si capisce nulla.

  3. #3
    Moderatore di Programmazione L'avatar di LeleFT
    Registrato dal
    Jun 2003
    Messaggi
    17,304
    Quote Originariamente inviata da fermat Visualizza il messaggio
    PS: il codice sarebbe meglio lo mettessi tra i tag appositi, così non si capisce nulla.
    E, aggiungo, senza formattazioni particolari derivanti dall'IDE (grassetti, colorazioni, ecc). Il codive va postato pulito all'interno degli appositi tag CODE.

    Un trucchetto facile per pulire il codice consiste nell'incollarlo PRIMA all'interno del blocco note di Windows (o altro editor neutro) e, quindi, ricopiarlo da lì.

    Ho sistemato io.

    Ciao.
    "Perchè spendere anche solo 5 dollari per un S.O., quando posso averne uno gratis e spendere quei 5 dollari per 5 bottiglie di birra?" [Jon "maddog" Hall]
    Fatti non foste a viver come bruti, ma per seguir virtute e canoscenza

  4. #4
    QUESTO è IL CODICE

    package aa.slider_2;


    import android.support.v7.app.AppCompatActivity;
    import android.os.Bundle;
    import android.text.Editable;
    import android.view.View.OnClickListener;
    import android.view.View;
    import java.net.HttpURLConnection;
    import java.net.MalformedURLException;
    import java.net.URL;
    import android.widget.Button;
    import android.widget.EditText;
    import android.content.Intent;
    import android.app.Activity;
    import java.io.IOException;
    import java.io.*;
    import java.net.URLEncoder;
    import android.app.AlertDialog;
    import android.content.DialogInterface;
    import android.os.AsyncTask;
    import android.widget.Toast;




    //ricorda che quando implementi onclicklistener devi richiamare obbligatoriamente il metodo unclick()
    public class MainActivity extends Activity implements OnClickListener {


    @Override
    protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main);
    //------------------------------------------------------------------------------------------
    //metto listener il bottone
    final Button btn_accedi = (Button) findViewById(R.id.btn_accedi);
    btn_accedi.setOnClickListener(this);
    final Button btn_registrati = (Button) findViewById(R.id.btn_registrati);
    btn_registrati.setOnClickListener(this);
    final Button btn_login = (Button) findViewById(R.id.btn_login);
    btn_login.setOnClickListener(this);
    final Button btn_drawer = (Button) findViewById(R.id.btn_drawer);
    btn_drawer.setOnClickListener(this);


    }




    public void onClick(View v) {
    // TODO Auto-generated method stub
    switch ( v.getId() ) {
    case R.id.btn_accedi:




    String url="https://www.malebee.cloud/webservice/log-in/log.php";
    new InvioDati().execute(url);




    break;


    case R.id.btn_registrati:
    try{
    Intent a = new Intent(MainActivity.this, RegistratiActivity.class);
    startActivity(a);
    }catch (Exception e){}
    break;


    case R.id.btn_login:
    try{
    Intent b = new Intent(MainActivity.this, LoginActivity.class);
    startActivity(b);
    }catch (Exception e){}
    break;


    case R.id.btn_drawer:
    try{
    Intent c = new Intent(MainActivity.this, DrawerActivity.class);
    startActivity(c);
    }catch (Exception e){}
    break;


    }
    }




    public class InvioDati extends AsyncTask<String,Void,String> {
    @Override
    protected String doInBackground(String ... url) {
    // azioni di invio
    String risultato="";
    try{
    final EditText email = (EditText) findViewById(R.id.email_box);
    final EditText password = (EditText) findViewById(R.id.psw_box);
    //-------------------------------------------------------------------------------------
    // recuperare il testo inserito dall'utente
    String post_email_1 = String.valueOf(email);
    String post_psw_1 = String.valueOf(password);


    // codifico le coppie di dati da inviare
    String post_email_2 = URLEncoder.encode("post_email", "UTF-8") + "=" + URLEncoder.encode(post_email_1, "UTF-8");
    String post_psw_2 = URLEncoder.encode("post_password", "UTF-8") + "=" + URLEncoder.encode(post_psw_1, "UTF-8");


    //SCELGO DOVE URL E INZIO LA CONNESIONE
    String Urls= url.toString();
    URL paginaURL = new URL(Urls);
    HttpURLConnection client = (HttpURLConnection) paginaURL.openConnection();


    // se devo inviare il dato in POST
    client.setDoOutput(true);
    client.setChunkedStreamingMode(0);


    // scrivo nello stream di uscita
    OutputStreamWriter wr = new OutputStreamWriter(client.getOutputStream());
    wr.write(post_email_2 +"&"+ post_psw_2);
    wr.flush();
    wr.close();
    risultato="si";


    }catch (Exception e){


    risultato=e.toString();
    }
    return risultato;
    }


    @Override
    protected void onPostExecute(String result) {


    if(result=="si")
    {
    Toast.makeText(getApplicationContext(),"si", Toast.LENGTH_SHORT).show();


    }
    else
    {Toast.makeText(getApplicationContext(),result, Toast.LENGTH_SHORT).show(); }


    }
    }
    }


    ----------------------------------------------------------------------------------------------------------------------------------------
    IL PROBLEMA CHE MI DA è IL SEGUENTE

  5. #5

  6. #6
    Utente di HTML.it L'avatar di andbin
    Registrato dal
    Jan 2006
    residenza
    Italy
    Messaggi
    18,254
    MalformedURLException vuol dire una cosa ben precisa: il url che passi al costruttore di URL è "sballato".
    E nel tuo caso è proprio quel [Ljava. .....

    E questo per un motivo molto semplice:

    quando hai fatto
    new InvioDati().execute(url);

    hai passato 1 oggetto String.

    Ma il doInBackground ha come parametro String... perché è un metodo "varargs" (può ricevere un numero arbitrario di argomenti). Il parametro tecnicamente è un ARRAY e tu stai invocando toString() su questo array. Gli array forniscono in stringa solo quella forma generalmente poco utile.

    In sostanza: NON devi fare toString() sull'array ma prendere il primo elemento dell'array (passi 1 String al execute, quindi un elemento c'è di certo)
    Ultima modifica di andbin; 30-03-2017 a 22:49
    Andrea, andbin.devSenior Java developerSCJP 5 (91%) • SCWCD 5 (94%)
    Java Versions Cheat Sheet

  7. #7
    Grazie per la risposta.
    Ho risolto quell'errore.
    Adesso mi da questo errore anche se io i permessi per internet gli ho inseriti :
    errore rete.png

    Manifest :

    <?xml version="1.0" encoding="utf-8"?>
    <manifest xmlns:android="http://schemas.android.com/apk/res/android"
    package="aa.slider_2">


    <!-- To auto-complete the email text field in the login form with the user's emails -->
    <uses-permission android:name="android.permission.GET_ACCOUNTS" />
    <uses-permission android:name="android.permission.READ_PROFILE" />
    <uses-permission android:name="android.permission.READ_CONTACTS" />


    <application
    android:allowBackup="true"
    android:icon="@mipmap/ic_launcher"
    android:label="@string/app_name"
    android:supportsRtl="true"
    android:theme="@style/AppTheme">
    <uses-permission android:name="android.permission.INTERNET" />
    <uses-permission android:name="android.permission.ACCESS_NETWORK_ST ATE" />




    <activity android:name=".WelcomeActivity">
    <intent-filter>
    <action android:name="android.intent.action.MAIN" />


    <category android:name="android.intent.category.LAUNCHER" />
    </intent-filter>
    </activity>
    <activity
    android:name=".MainActivity"
    android:label="@string/title_activity_login" />
    <activity
    android:name=".DrawerActivity"
    android:label="@string/title_activity_drawer"
    android:theme="@style/AppTheme" />
    <activity
    android:name=".LoginActivity"
    android:label="@string/title_activity_login" />
    <activity android:name=".RegistratiActivity"></activity>
    </application>


    </manifest>

  8. #8
    ma gli errori che visualizzi, li leggi???

    se fai una veloce ricerca su google, vedrai che devi impostare dei permessi per usare internet da una tua app....

  9. #9
    Gli errori gli faccio visualizzare quando provo l'applicazione.
    Il problema è che io i permessi all'interno del manfest gli ho aggiunti ma l'errore me lo da comunque

  10. #10
    Ho risolto ero io che non mi ero accorto di aver messo i permessi nella posizione sbagliata

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2024 vBulletin Solutions, Inc. All rights reserved.