Autore Topic: java.io.IOException: Unable to parse response from server  (Letto 1607 volte)

Offline mimmog

  • Utente senior
  • ****
  • Post: 731
  • Respect: +11
    • MisterX_Dev
    • Mostra profilo
  • Dispositivo Android:
    Galaxy Note e Galaxy Nexus
  • Play Store ID:
    MisterX_Dev
  • Sistema operativo:
    Windows 7
java.io.IOException: Unable to parse response from server
« il: 20 Luglio 2011, 00:37:35 CEST »
0
Nel rilevamento del nome della regione, ottenuta tramite questo codice :
Codice (Java): [Seleziona]
lmanager = (LocationManager)getSystemService(Context.LOCATION_SERVICE);
lmanager.requestLocationUpdates(LocationManager.NETWORK_PROVIDER, 0, 0, llistener);

LocationListener llistener = new LocationListener(){
        @Override
        public void onLocationChanged(Location location) {
                      Double geoLat = location.getLatitude();
                Double geoLng = location.getLongitude();
                Geocoder geocoder = new Geocoder(map.this,Locale.getDefault());
                 try {
                        List<Address> list = geocoder.getFromLocation(geoLat, geoLng, 1);
                        regione = address.getAdminArea();
                               lmanager.removeUpdates(llistener);
                } catch (IOException e) {
                       e.printStackTrace();
                    lmanager.removeUpdates(llistener);
                }
        }

però dopo la riga
Codice (Java): [Seleziona]
List<Address> list = geocoder.getFromLocation(geoLat, geoLng, 1);va in IOException con l'errore Unable to parse response from server, mi sapete dire perchè ?

I permessi LOCATION_FINE, LOCATION_COURSE,INTERNET ci sono

Offline 7h38ugg3r

  • Moderatore globale
  • Utente storico
  • *****
  • Post: 1200
  • Respect: +133
    • riccardofischetti
    • th38ugg3r
    • @7h38ugg3r
    • Mostra profilo
  • Dispositivo Android:
    Galaxy-S GT I-9000/ ASUS Eee Pad Transformer
  • Play Store ID:
    Riccardo Fischetti
  • Sistema operativo:
    OS X Lion / Linux Mint 11 (Katya)
Re:java.io.IOException: Unable to parse response from server
« Risposta #1 il: 20 Luglio 2011, 11:42:59 CEST »
0
posta il logcat.
7h38ugg3r<=>thebugger
Non conosci Java? Allora sei nel posto sbagliato!

http://www.androidpatterns.com/

Offline mimmog

  • Utente senior
  • ****
  • Post: 731
  • Respect: +11
    • MisterX_Dev
    • Mostra profilo
  • Dispositivo Android:
    Galaxy Note e Galaxy Nexus
  • Play Store ID:
    MisterX_Dev
  • Sistema operativo:
    Windows 7
Re:java.io.IOException: Unable to parse response from server
« Risposta #2 il: 20 Luglio 2011, 11:57:14 CEST »
0
Non c'è logcat perchè non va in errore ma mi appare semplicemente la Dialog che avevo impostato quando nel try va in IOException con questo messaggio appunto Unable to parse response from server

In pratica quello che ho notato è che dal provider le coordiinate arrivano istantanee anche in assenza di segnale mentre quando arriva a questa riga :
Codice (Java): [Seleziona]
List<Address> list = geocoder.getFromLocation(geoLat, geoLng, 1);
va in eccezzione.

Ho studiato il problema, a quanto pare il server google che restituisce le info del getFromLocation vuole una connessione di rete decente quindi o WiFi o EDGE/GPRS/HSDPA/etc basta che sia decente se il segnale è debole va in quella eccezzione...infatti mi chiedevo come mai Google Maps restituisse subito la location anche con 0 tacche ed è perchè prede solo le coordinate e fa un MoveToPoint ma non esegue il geocoder.getFromLocation....

A questo punto dato che sono informazioni che devo memorizzare su un DB Mysql mi conviene far prendere solo le coordinate e memorizzarle tipo nel device nel db e poi con un service quando rileva che il segnale è potente li trasferisce in backgroud sul web.. che dite ??

Offline 7h38ugg3r

  • Moderatore globale
  • Utente storico
  • *****
  • Post: 1200
  • Respect: +133
    • riccardofischetti
    • th38ugg3r
    • @7h38ugg3r
    • Mostra profilo
  • Dispositivo Android:
    Galaxy-S GT I-9000/ ASUS Eee Pad Transformer
  • Play Store ID:
    Riccardo Fischetti
  • Sistema operativo:
    OS X Lion / Linux Mint 11 (Katya)
Re:java.io.IOException: Unable to parse response from server
« Risposta #3 il: 20 Luglio 2011, 14:25:20 CEST »
0
1. Il logcat c'è sempre: in quel caso lui fa un printStackTrace...è proprio quello che scrive che indica il tipo di errore
2. che rete hai? con questo ragionamento anche un segnale edge molto basso non andrebbe bene. Comunque, potresti pensare di posticipare l'invio, in caso di errore, e fare dei tentativi ogni tot tempo. Non ti consiglio di farlo al segnale, perché se parti da un segnale basso, probabilmente in continuazione avrai dei cambi di stato da no-rete a rete debole, per cui faresti dei tentativi quasi continui.
7h38ugg3r<=>thebugger
Non conosci Java? Allora sei nel posto sbagliato!

http://www.androidpatterns.com/

Offline mimmog

  • Utente senior
  • ****
  • Post: 731
  • Respect: +11
    • MisterX_Dev
    • Mostra profilo
  • Dispositivo Android:
    Galaxy Note e Galaxy Nexus
  • Play Store ID:
    MisterX_Dev
  • Sistema operativo:
    Windows 7
Re:java.io.IOException: Unable to parse response from server
« Risposta #4 il: 20 Luglio 2011, 18:25:34 CEST »
0
1. Il logcat c'è sempre: in quel caso lui fa un printStackTrace...è proprio quello che scrive che indica il tipo di errore
Si giusto :)

2. che rete hai? con questo ragionamento anche un segnale edge molto basso non andrebbe bene. Comunque, potresti pensare di posticipare l'invio, in caso di errore, e fare dei tentativi ogni tot tempo. Non ti consiglio di farlo al segnale, perché se parti da un segnale basso, probabilmente in continuazione avrai dei cambi di stato da no-rete a rete debole, per cui faresti dei tentativi quasi continui.

Ho 3 italia come rete ma qui a casa oscilla tra 0 e 1 tacca se metto il WiFi invece va tranquillo e non mi restituisce nessun errore. Pensavo ad implementare un service che ogni tot tempo cerca di inviare i dati fino a quando nel db SQLite non ci sono più record e poi si chiude, che dici ?

Offline 7h38ugg3r

  • Moderatore globale
  • Utente storico
  • *****
  • Post: 1200
  • Respect: +133
    • riccardofischetti
    • th38ugg3r
    • @7h38ugg3r
    • Mostra profilo
  • Dispositivo Android:
    Galaxy-S GT I-9000/ ASUS Eee Pad Transformer
  • Play Store ID:
    Riccardo Fischetti
  • Sistema operativo:
    OS X Lion / Linux Mint 11 (Katya)
Re:java.io.IOException: Unable to parse response from server
« Risposta #5 il: 21 Luglio 2011, 09:29:25 CEST »
0
credo che vada bene, come soluzione.
7h38ugg3r<=>thebugger
Non conosci Java? Allora sei nel posto sbagliato!

http://www.androidpatterns.com/

Offline mimmog

  • Utente senior
  • ****
  • Post: 731
  • Respect: +11
    • MisterX_Dev
    • Mostra profilo
  • Dispositivo Android:
    Galaxy Note e Galaxy Nexus
  • Play Store ID:
    MisterX_Dev
  • Sistema operativo:
    Windows 7
Re:java.io.IOException: Unable to parse response from server
« Risposta #6 il: 21 Luglio 2011, 13:25:49 CEST »
0
Mentre se volessi far usare prima il GPS per rilevare le coordinate e poi nel caso non ci riuscisse dopo tot secondi far procedere alla Rete Mobile dovrei utilizzare un CountDown oppure esiste una funzione apposita che si può chiamare?

Offline 7h38ugg3r

  • Moderatore globale
  • Utente storico
  • *****
  • Post: 1200
  • Respect: +133
    • riccardofischetti
    • th38ugg3r
    • @7h38ugg3r
    • Mostra profilo
  • Dispositivo Android:
    Galaxy-S GT I-9000/ ASUS Eee Pad Transformer
  • Play Store ID:
    Riccardo Fischetti
  • Sistema operativo:
    OS X Lion / Linux Mint 11 (Katya)
Re:java.io.IOException: Unable to parse response from server
« Risposta #7 il: 21 Luglio 2011, 14:44:41 CEST »
0
quando istanzi un locationlistener, puoi dirgli di prendere il migliore disponibile, quindi se hai il gps userà quello, se hai la rete userà la rete....
7h38ugg3r<=>thebugger
Non conosci Java? Allora sei nel posto sbagliato!

http://www.androidpatterns.com/

Offline mimmog

  • Utente senior
  • ****
  • Post: 731
  • Respect: +11
    • MisterX_Dev
    • Mostra profilo
  • Dispositivo Android:
    Galaxy Note e Galaxy Nexus
  • Play Store ID:
    MisterX_Dev
  • Sistema operativo:
    Windows 7
Re:java.io.IOException: Unable to parse response from server
« Risposta #8 il: 21 Luglio 2011, 17:34:33 CEST »
0
Si, quello già lo faccio e premetto che con un alert faccio attivare sia il GPS che la localizzazione tramite la rete però se faccio partire entrambi i listener mi rileva entrambe le coordinate (in genere prima quelle della rete che è quasi istantaneo) mentre io vorrei che andasse prima sul GPS se poi dopo tipo 30 secondi il GPS è ancora li in elaborazione passasse alla Rete perchè a volte capita che il GPS è attivo e lui rimane comunque a cercare le coordinate in eterno non c'è un timeout

Offline 7h38ugg3r

  • Moderatore globale
  • Utente storico
  • *****
  • Post: 1200
  • Respect: +133
    • riccardofischetti
    • th38ugg3r
    • @7h38ugg3r
    • Mostra profilo
  • Dispositivo Android:
    Galaxy-S GT I-9000/ ASUS Eee Pad Transformer
  • Play Store ID:
    Riccardo Fischetti
  • Sistema operativo:
    OS X Lion / Linux Mint 11 (Katya)
Re:java.io.IOException: Unable to parse response from server
« Risposta #9 il: 21 Luglio 2011, 17:45:31 CEST »
0
non ci siamo capiti.
Intendo dire che quando istanzi IL listener (uno solo), gli dici di prenderti il migliore che ha a disposizione in quel momento, e rimane uno solo.
7h38ugg3r<=>thebugger
Non conosci Java? Allora sei nel posto sbagliato!

http://www.androidpatterns.com/