Autore Topic: Inviare dati ad una JSP  (Letto 615 volte)

Offline Essio

  • Nuovo arrivato
  • *
  • Post: 49
  • Respect: 0
    • alessiomorotti
    • Mostra profilo
  • Dispositivo Android:
    vodafone 848-SAMSUNG GALAXY Tab
  • Sistema operativo:
    Window Vista
Inviare dati ad una JSP
« il: 08 Novembre 2011, 16:51:41 CET »
0
Ciao a tutti,
devo realizzare una piccola applicazione che invia una stringa recuperata da un editText a una pagina JSP.

Per fare questo ho realizzato una classe che stabilisce una connessione HTTpUrlConnection( e qui tutto bene) , e ho provato ad inviare la stringa attraverso il metodo write() di OutputStreamWriter, ma in questo frammento si codice viene generata un' eccezzione:
java.net.ProtocolException: method does not support a request body: POST

La suddetta classe in ambiente di sviluppo Java funziona correttamente, Lanciandola attraverso l' emulatore android no.
Quale può essere il problema?
Ho agito nella maniera corretta (scelta di metodi e classi Java), e dovrei scegliere una strada diversa?
Morotti Alessio

Offline Ricky`

  • Amministratore
  • Utente storico
  • *****
  • Post: 3489
  • Respect: +506
    • Github
    • Google+
    • rciovati
    • Mostra profilo
Re:Inviare dati ad una JSP
« Risposta #1 il: 08 Novembre 2011, 17:57:24 CET »
0
Il forum e la rete sono pieni di esempi su come fare chiamate http post e get in Android, basta una semplice ricerca.

Offline Essio

  • Nuovo arrivato
  • *
  • Post: 49
  • Respect: 0
    • alessiomorotti
    • Mostra profilo
  • Dispositivo Android:
    vodafone 848-SAMSUNG GALAXY Tab
  • Sistema operativo:
    Window Vista
Re:Inviare dati ad una JSP
« Risposta #2 il: 10 Novembre 2011, 10:37:25 CET »
0
Ho guardato e mi studiato una varietà di esempi su collegamenti a pagine web.
Ho optato di utilizzare la classe HttpClient e successiva richiesta HttpGet,scelta piu appropriata per le applicazioni Anndroid.
Ho provato a creare qualche piccola app sul mio emulatore seguendo tutte le regole , settando il permesso ad INTERNET nel file AndroidManifest...
Ho preso direttamente esempi per provare se magari mancava qualcosa o se sbagliavo qualcosa....niente.
Ogni volta mi lancia questa eccezzione :  android.os.NetworkOnMainThreadException.
Ho letto sulle APIs che viene la generata quando l' applicazione tente di eseguire un' operazione di net working su thread principale.
Cosa significa ?
E sopratutto come posso risolvere?

Vi ringrazio anticipatamente per l'attenzione.
Morotti Alessio

Offline Ricky`

  • Amministratore
  • Utente storico
  • *****
  • Post: 3489
  • Respect: +506
    • Github
    • Google+
    • rciovati
    • Mostra profilo
Re:Inviare dati ad una JSP
« Risposta #3 il: 10 Novembre 2011, 10:55:11 CET »
0
E sopratutto come posso risolvere?

Eseguendo la chiamata Http in un thread separato, ovviamente.
Leggi qui:

Painless Threading | Android Developers


Offline Essio

  • Nuovo arrivato
  • *
  • Post: 49
  • Respect: 0
    • alessiomorotti
    • Mostra profilo
  • Dispositivo Android:
    vodafone 848-SAMSUNG GALAXY Tab
  • Sistema operativo:
    Window Vista
Re:Inviare dati ad una JSP
« Risposta #4 il: 10 Novembre 2011, 11:35:43 CET »
0
Risolto estandendo la classe AsyncTask. :-)
Grazie Mille.

Anche se ho ancora qualche problema se provo ad eseguire in locale, ma credo questo sia altro problema.

In ogni caso posto un po di codice nel caso possa servire a qualcuno:

Codice (Java): [Seleziona]
private class DownloadWebPageTask extends AsyncTask<String, Void, String> {
                        @Override
                        protected String doInBackground(String... urls) {
                                String response = "";
                                for (String url : urls) {
                                        DefaultHttpClient client = new DefaultHttpClient();
                                        HttpGet httpGet = new HttpGet(url);
                                        try {
                                                HttpResponse execute = client.execute(httpGet);
                                                InputStream content = execute.getEntity().getContent();

                                                BufferedReader buffer = new BufferedReader(
                                                                new InputStreamReader(content));
                                                String s = "";
                                                while ((s = buffer.readLine()) != null) {
                                                        response += s;
                                                }

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

public void readWebpage(View view) {
                        DownloadWebPageTask task = new DownloadWebPageTask();
                        task.execute(new String[] { "http://android.org" });

                }
Morotti Alessio