Autore Topic: easywsdl  (Letto 294 volte)

Offline SINGWOLF

  • Nuovo arrivato
  • *
  • Post: 2
  • Respect: 0
    • Mostra profilo
  • Dispositivo Android:
    Samsung Note 3
  • Sistema operativo:
    windows 8
easywsdl
« il: 02 Settembre 2016, 17:13:20 CEST »
0
Buongiorno a tutti e se possibile perdonatemi in anticipo,

è la prima app che sto implementando e non riesco effettuare un chiamata ad un webservice.

allego il metodo
 
Codice (Java(TM) 2 Platform Standard Edition 5.0): [Seleziona]
  public void getOraWS() {
        BasicHttpBinding_IWcfPdaSxtService service  =new BasicHttpBinding_IWcfPdaSxtService();

        try {

            String result = service.GetOra("Ivana");

        } catch (Exception e) {
            e.printStackTrace();

        }


    }

quando arriva a questa istruzione scatta l'eccezione "android.os.NetworkOnMainThreadException"
            String result = service.GetOra("Ivana");


qualcuno riesci a spiegarmi cosa mi manca per chiudere il cerchio?

Grazie in Anticipo


Offline tonno16

  • Utente storico
  • *****
  • Post: 1169
  • Respect: +56
    • Mostra profilo
  • Dispositivo Android:
    moto g
  • Play Store ID:
    Diego Tonini
  • Sistema operativo:
    OpenSuse
Re:easywsdl
« Risposta #1 il: 04 Settembre 2016, 15:19:20 CEST »
0
Non ho letto niente. Mi è caduto l'occhio sul l'eccezione e basta. Su anroid non puoi fare operazioni in LAN o wan  nel thread principale. Devi usare un thread apposito

Offline SINGWOLF

  • Nuovo arrivato
  • *
  • Post: 2
  • Respect: 0
    • Mostra profilo
  • Dispositivo Android:
    Samsung Note 3
  • Sistema operativo:
    windows 8
Re:easywsdl
« Risposta #2 il: 05 Settembre 2016, 17:50:06 CEST »
0
Grazie Mille !!!

ora diciamo che il WS mi risponde, purtroppo solo la prima volta correttamente,
Codice (Java): [Seleziona]
       
public void getOraWS() {

            try {

                BasicHttpBinding_IWcfPdaSxtService service  =new BasicHttpBinding_IWcfPdaSxtService();

                Log.d(msg, "LOG: chiamo GetOra");
                String result = service.GetOra("Ivan").toString();
               Log.d(msg, "LOG: Risposta GetOra" + result);

                 timeWS= result.toString();
            } catch (Exception e) {
                e.printStackTrace();
                Log.d(msg, "LOG: ERRORE GetOra " + e.getMessage());

                 timeWS = e.getMessage().toString();
            }

        }
Risposta: "Cara Ivana sono le 17:40"


mentre dalla seconda chiamata mi da sempre questo errore:
 byte[] cannot be cast to java.lang.String

il mio scopo per ora è stupido volevo solo capire come funzionano le chiamate asincrone.

vorrei semplicemente all'avvio dell'app interrogare il WS ogni minuto e aggiornare una Text nella main activity e mentre interroga il WS far comparire per la durata della chiamata una ProgressDialog .


Grazie
 
« Ultima modifica: 05 Settembre 2016, 17:55:31 CEST da SINGWOLF »

Offline tonno16

  • Utente storico
  • *****
  • Post: 1169
  • Respect: +56
    • Mostra profilo
  • Dispositivo Android:
    moto g
  • Play Store ID:
    Diego Tonini
  • Sistema operativo:
    OpenSuse
Re:easywsdl
« Risposta #3 il: 05 Settembre 2016, 20:22:44 CEST »
0
BasicHttp....io non so cosa sua e come funzioni. In ogni caso mi pare di capire che hai un server che risponde.

Se dovessi replicare quello che devi fare io farei:

Importa la libreria asynkhttp. Ora fai una chiamata al sito in questione questa libreria ha calback per diversi generi di risposta. Facendo un server puro in java puoi creare una risposta fatta di semplice testo. Oppure ritornare un json.
Ora la risposta se viene gestita nella callback appropriata nella libreria puoi tranquillamente fare il cast a string