Autore Topic: Urlencoder non prende la Stringa  (Letto 666 volte)

Offline Carlos

  • Utente junior
  • **
  • Post: 74
  • Respect: 0
    • Mostra profilo
  • Dispositivo Android:
    Zopo ZP1000
  • Play Store ID:
    Giovanni Miceli
  • Sistema operativo:
    Windows 8
Urlencoder non prende la Stringa
« il: 27 Marzo 2011, 16:19:58 CEST »
0
Ho un problema con L'URLencode...molto strano.

Io ho una stringa che ottengo con:
Codice (Java): [Seleziona]
String TEST = bundle.getString("MiaChiave");
Se la richiamo cosi
Codice (Java): [Seleziona]
TextView tv = (TextView) findViewById(R.id.summary);
tv.setText(TEST);
tutto ok, me la stampa a video

Ma se la voglio richiamare qui
Codice (Java): [Seleziona]
public static String EncodeTEST;
EncodeTEST = URLEncoder.encode(TEST, "UTF-8");
non funziona !!! ma perche ?

Offline Verandi

  • Moderatore
  • Utente normale
  • *****
  • Post: 378
  • Respect: +75
    • Mostra profilo
  • Sistema operativo:
    Windows 7
Re:Urlencoder non prende la Stringa
« Risposta #1 il: 27 Marzo 2011, 17:17:07 CEST »
0
Il codice che hai postato è giusto, per cui l'errore è altrove. Come fai a vedere la stringa EncodeTest? La stampi nel log? In una textView?

Offline Carlos

  • Utente junior
  • **
  • Post: 74
  • Respect: 0
    • Mostra profilo
  • Dispositivo Android:
    Zopo ZP1000
  • Play Store ID:
    Giovanni Miceli
  • Sistema operativo:
    Windows 8
Re:Urlencoder non prende la Stringa
« Risposta #2 il: 27 Marzo 2011, 17:22:19 CEST »
0
Si la stampo in una TextView con id:summary

Codice (Java): [Seleziona]
TextView tv = (TextView) findViewById(R.id.summary);
tv.setText(TEST);

quindi sono sicuro che la Stringa TEST arriva.....ma se la inserisco nell'encode...non va...
perchè mi dovrebbe far connettere ad un sito internet tramite metodo GET
Codice (Java): [Seleziona]
String X= "http://www.x.com/"+TESTe non funziona

Mentre se instanzio una stringa
Codice (Java): [Seleziona]
String TEST = "ciao";questa la prende!!! incredibile

Offline Verandi

  • Moderatore
  • Utente normale
  • *****
  • Post: 378
  • Respect: +75
    • Mostra profilo
  • Sistema operativo:
    Windows 7
Re:Urlencoder non prende la Stringa
« Risposta #3 il: 27 Marzo 2011, 17:35:37 CEST »
0
Ehm...in questo secondo post la stringa encodeTest non l'hai messa. Ti ho chiesto come controlli la stringa EncodeTest e non la stringa TEST.  :-)

Comunque, da quel che ho capito, sono sicuro che:
- Crei una variabile stringa di nome TEST.
- La stampi sulla textView di nome summary, per controllarla.
Poi, suppongo:
- Salvi nella stringa encodeTest quella elaborata dal metodo URLEncode.encode();
- Crei un'altra stringa di nome X, costituita da "http://ecc" alla quale aggiungi, mi auguro, la stringa encodeTest e non la stringa TEST.
- Usi la stringa X per connetterti al sito indicato dalla stringa X stessa.

Se fai ciò e non funziona, l'errore è in come ti connetti, perché tutto il resto, se rispecchiato dagli snippet di codice che hai postato, sembra corretto.

Offline Carlos

  • Utente junior
  • **
  • Post: 74
  • Respect: 0
    • Mostra profilo
  • Dispositivo Android:
    Zopo ZP1000
  • Play Store ID:
    Giovanni Miceli
  • Sistema operativo:
    Windows 8
Re:Urlencoder non prende la Stringa
« Risposta #4 il: 27 Marzo 2011, 17:48:07 CEST »
0
Ti spiego tutto:
Codice (Java): [Seleziona]
public class main3 extends Activity {
        public static String TEST_2;
        public static String TEST_3;

        String X = "ciao";
               
        Bundle bundle = getIntent().getExtras();
        String TEST = (String) bundle.getString("Da");

protected void onCreate(Bundle icicle) {
                super.onCreate(icicle);
                setContentView(R.layout.main3);
TextView tv = (TextView) findViewById(R.id.summary);
tv.setText(X + TEST) //mi stampa a video entrambe le stringe, sia quella inserita nel codice, sia quella che estraggo dal bundle

public main3() throws Exception {
 
                TEST_2 = URLEncoder.encode(TEST, "UTF-8");
                TEST_3 = URLEncoder.encode(X, "UTF-8");
}

poi nell'URL metto:
Codice (Java): [Seleziona]
String str = "http://www.xxx.com/"+ TEST_2;
// Make connection
URL url = new URL(str);
quando avvio l'applicazione mi va in crash....

Se invece faccio
Codice (Java): [Seleziona]
String str = "http://www.xxx.com/"+ TEST_3;
// Make connection
URL url = new URL(str);
funziona tutto......

è come se la tringa gia inizializzata nel codice riesce a codificarla, mentre quella prelevata da un'altra classe (tramite bundle) non la codifica e manda in crash tutto.

Offline Verandi

  • Moderatore
  • Utente normale
  • *****
  • Post: 378
  • Respect: +75
    • Mostra profilo
  • Sistema operativo:
    Windows 7
Re:Urlencoder non prende la Stringa
« Risposta #5 il: 27 Marzo 2011, 17:56:09 CEST »
0
Ah, quindi il problema, in realtà, è che l'applicazione va in crash. Potresti incollare l'errore che appare nel LogCat?

Offline bradipao

  • Moderatore globale
  • Utente storico
  • *****
  • Post: 4043
  • keep it simple
  • Respect: +567
    • Github
    • Google+
    • bradipao
    • Mostra profilo
  • Dispositivo Android:
    Nexus 5
  • Play Store ID:
    Bradipao
  • Sistema operativo:
    W7
Re:Urlencoder non prende la Stringa
« Risposta #6 il: 27 Marzo 2011, 18:04:25 CEST »
0
Vedendo il codice postato (quindi solo una parte di quello che usi), mi sorge una domanda: come mai non fai tutte le operazioni nella OnCreate invece che farle un po' nel corpo dell'Activity, un po' nella OnCreate e un po' nel costruttore?

In generale è meglio evitare di interagire con il costruttore dell'Activity, perchè di fatto non si ha controllo di quando un'Activity viene creata dal sistema, mentre c'è la OnCreate che ha un posto ben preciso nel lifecycle. Magari il problema del crash dipende proprio da questo... prova a togliere il codice dal costruttore e a metterlo nella OnCreate,
« Ultima modifica: 27 Marzo 2011, 18:06:00 CEST da bradipao »
NON rispondo a domande nei messaggi privati
Bradipao @ Play Store

Offline Verandi

  • Moderatore
  • Utente normale
  • *****
  • Post: 378
  • Respect: +75
    • Mostra profilo
  • Sistema operativo:
    Windows 7
Re:Urlencoder non prende la Stringa
« Risposta #7 il: 27 Marzo 2011, 18:26:52 CEST »
0
Già, quoto Bradipao. Inoltre, ora che guardo meglio, è impossibile chiamare il metodo getIntent() al di fuori dell'onCreate()/onResume()ecc. L'ide che stai usando, immagino Eclipse, lo dovrebbe segnare come errore di compilazione.

EDIT: ho scritto una castroneria. :)
« Ultima modifica: 27 Marzo 2011, 18:43:08 CEST da Verandi »

Offline Ricky`

  • Amministratore
  • Utente storico
  • *****
  • Post: 3489
  • Respect: +506
    • Github
    • Google+
    • rciovati
    • Mostra profilo
Re: Urlencoder non prende la Stringa
« Risposta #8 il: 27 Marzo 2011, 18:32:47 CEST »
0
Essendo un metodo di Activity puoi chiamarlo in ogni punto del codice :)

Sent from my HTC Desire

Offline Verandi

  • Moderatore
  • Utente normale
  • *****
  • Post: 378
  • Respect: +75
    • Mostra profilo
  • Sistema operativo:
    Windows 7
Re:Urlencoder non prende la Stringa
« Risposta #9 il: 27 Marzo 2011, 19:19:31 CEST »
0
@Ricky: Sì, ho scritto una castroneria, ma mi ricordavo di aver avuto problemi usando il metodo getIntent() al di fuori dell'onCreate()e simili. Tuttavia ho appena letto che, al di fuori dell'onCreate()/onStart()/onResume(), non hai accesso agli extra dell'Intent.  :-o Hai qualche idea del perché?


Immagino, quindi, che, pur non avendo il logcat a disposizione, probabilmente sia un NullPointerException e dovrebbe risolversi spostando le assegnazioni di bundle e TEST all'interno dell'onCreate(). Il dubbio che possa essere diversamente è che il crash avviene solo quando si usa la stringa TEST_3.

Offline Carlos

  • Utente junior
  • **
  • Post: 74
  • Respect: 0
    • Mostra profilo
  • Dispositivo Android:
    Zopo ZP1000
  • Play Store ID:
    Giovanni Miceli
  • Sistema operativo:
    Windows 8
Re:Urlencoder non prende la Stringa
« Risposta #10 il: 27 Marzo 2011, 19:34:08 CEST »
0
Ho spostato il bundle all'interno del create ma facendo cosi in questa parte di codice:

public main3() throws Exception {
 
                TEST_2 = URLEncoder.encode(TEST, "UTF-8");
                TEST_3 = URLEncoder.encode(X, "UTF-8");
}

l'encoder mi da errore perche non trova la stringa TEST (ovviamente)

Offline bradipao

  • Moderatore globale
  • Utente storico
  • *****
  • Post: 4043
  • keep it simple
  • Respect: +567
    • Github
    • Google+
    • bradipao
    • Mostra profilo
  • Dispositivo Android:
    Nexus 5
  • Play Store ID:
    Bradipao
  • Sistema operativo:
    W7
Re:Urlencoder non prende la Stringa
« Risposta #11 il: 27 Marzo 2011, 19:48:01 CEST »
0
Premetto con molta sincerità: non ho le idee ben chiarissime di come e quando viene eseguito il codice nel corpo dell'activity e quello del constructor.

Però io metterei anche ques'ultima parte di codice dentro l'onCreate, per ora alla fine.

Una cosa tipo:
Codice (Java): [Seleziona]
public class main3 extends Activity {
        public static String TEST_2;
        public static String TEST_3;

protected void onCreate(Bundle icicle) {
        super.onCreate(icicle);
        setContentView(R.layout.main3);
        String X = "ciao";
               
        Bundle bundle = getIntent().getExtras();
        String TEST = (String) bundle.getString("Da");

        TextView tv = (TextView) findViewById(R.id.summary);
        tv.setText(X + TEST) //mi stampa a video entrambe le stringe, sia quella inserita nel codice, sia quella che estraggo dal bundle
                TEST_2 = URLEncoder.encode(TEST, "UTF-8");
                TEST_3 = URLEncoder.encode(X, "UTF-8");
}

Se per altre ragioni (codice non mostrato) devi per forza eseguire codice dentro il costruttore dell'Activity, non so proprio come aiutarti, nei vari esempi in cui mi sono imbattuto non viene mai citato.  :-(
« Ultima modifica: 27 Marzo 2011, 19:53:55 CEST da bradipao »
NON rispondo a domande nei messaggi privati
Bradipao @ Play Store

Offline Carlos

  • Utente junior
  • **
  • Post: 74
  • Respect: 0
    • Mostra profilo
  • Dispositivo Android:
    Zopo ZP1000
  • Play Store ID:
    Giovanni Miceli
  • Sistema operativo:
    Windows 8
Re:Urlencoder non prende la Stringa
« Risposta #12 il: 28 Marzo 2011, 11:49:04 CEST »
0
Ho risolto tutto, conviene sempre mettere tutto all'interno dell'onCreate....avete ragione :D