Autore Topic: HTTP post file XML and reader JAVA with Struts2  (Letto 1333 volte)

Offline mariusv5

  • Nuovo arrivato
  • *
  • Post: 5
  • Respect: 0
    • Mostra profilo
  • Dispositivo Android:
    HTC Legend
  • Sistema operativo:
    Windows
HTTP post file XML and reader JAVA with Struts2
« il: 03 Dicembre 2010, 15:54:28 CET »
0
Scusate la mia ignoranza, ma ho da poco iniziato a sviluppare applicazioni su Android, in java speriamo che me la cavo !!!

Devo realizzare un'applicazione android client che invia delle informazioni tramite una post, di seguito il metodo che ho realizzato:

Codice (Java): [Seleziona]
            public void send(String xmlContentToSend)
            {
                String url = "http://10.10.10.1/recorder/gpsinfo.action";
                DefaultHttpClient httpClient = new DefaultHttpClient();
                HttpPost httpPost = new HttpPost(url);
                httpPost.addHeader("Accept", "text/xml");
                httpPost.addHeader("Content-Type", "application/xml");
               
                try
                {
                        StringEntity entity = new StringEntity(xmlContentToSend, "UTF-8");
                        entity.setContentType("application/xml");
                        httpPost.setEntity(entity);
                       
                        // Execute is a blocking call, it's best to call this code in a thread separate from the ui's
                        httpClient.execute(httpPost);
                }
                catch (Exception ex)
                {
                       // Error
                }
            }

Quindi per prima cosa vorrei sapere se quanto realizzato è utile a veicolare una stringa contenente i dati da trasmettere. Avete un metodo che lavora meglio magari passando le info come parametri della post ?

Il secondo problema è la realizzazione della parte server, utile alla lettura dei dati inviati dal dispositivo Android. Io per le mie applicazioni, utilizzo Struts2 come framework ma qui non saprei come leggere le info in ricezione.

Codice (Java): [Seleziona]
        public class GSPInfoAction extends ActionSupport
        {
          public String execute() throws Exception
          {
              ???
          }
        }

Grazie in anticipo e scusate della mia niubbagine !!!
« Ultima modifica: 05 Dicembre 2010, 12:01:59 CET da JD, Reason: Usa il bbcode java e non quello xml!! xD »

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:HTTP post file XML and reader JAVA with Struts2
« Risposta #1 il: 03 Dicembre 2010, 16:26:30 CET »
+1
Per quanto riguarda la prima domanda, non so se ti è utile o è quello che cerchi, ma ecco come passare i parametri nella chiamata post:

Codice (Java): [Seleziona]
...
List<NameValuePair> nameValuePairs = new ArrayList<NameValuePair>(1);
nameValuePairs.add(new BasicNameValuePair("name", "7h38ugg3r"));
nameValuePairs.add(new BasicNameValuePair("rndkey", "KJFDG87432NF83WRLS4OJ"));
...
httppost.setEntity(new UrlEncodedFormEntity(nameValuePairs));
...


Per quanto riguarda la seconda domanda, non devi fare niente di particolare, cioè devi solo implementare setter/getter delle properties che ti interessano, così come faresti per qualsiasi form.
In pratica è come se tu avessi riempito un form e postato i dati ad un'Action di struts per cui, rifacendomi all'esempio che ho scritto prima, dovresti definirti 2 oggetti di tipo String (name e rndKey) e implementarne setter e getter.
Dentro il metodo execute() avrai accesso a entrambe le variabili tramite gli appositi getter.

Al limite, senza sfruttare struts2, potresti prenderti un Parameter dalla request che arriva (request.getParameter("name") per intenderci).

Spero di esserti stato di aiuto.
« Ultima modifica: 03 Dicembre 2010, 16:28:07 CET da 7h38ugg3r »
7h38ugg3r<=>thebugger
Non conosci Java? Allora sei nel posto sbagliato!

http://www.androidpatterns.com/

Offline Ricky`

  • Amministratore
  • Utente storico
  • *****
  • Post: 3487
  • Respect: +506
    • Github
    • Google+
    • rciovati
    • Mostra profilo
Re:HTTP post file XML and reader JAVA with Struts2
« Risposta #2 il: 03 Dicembre 2010, 17:42:26 CET »
0
Comunque direi che questa non è una cosa relativa ad android, o sbaglio?

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:HTTP post file XML and reader JAVA with Struts2
« Risposta #3 il: 03 Dicembre 2010, 17:45:50 CET »
0
Sicuramente.

Ho risposto alla seconda parte solo per chiarire che non c'è nessun tipo di differenza nell 'invocare la action da qualsiasi terminale (browser, smartphone, etc...).
7h38ugg3r<=>thebugger
Non conosci Java? Allora sei nel posto sbagliato!

http://www.androidpatterns.com/

Offline mariusv5

  • Nuovo arrivato
  • *
  • Post: 5
  • Respect: 0
    • Mostra profilo
  • Dispositivo Android:
    HTC Legend
  • Sistema operativo:
    Windows
Re:HTTP post file XML and reader JAVA with Struts2
« Risposta #4 il: 03 Dicembre 2010, 18:00:54 CET »
0
Per la prima parte ci si riferisce ad applicazione per Android.

Grazie per i consigli molto utili, ora eseguo subito le modifiche e vi faccio sapere l'esito.

Offline mariusv5

  • Nuovo arrivato
  • *
  • Post: 5
  • Respect: 0
    • Mostra profilo
  • Dispositivo Android:
    HTC Legend
  • Sistema operativo:
    Windows
Re:HTTP post file XML and reader JAVA with Struts2
« Risposta #5 il: 04 Dicembre 2010, 23:32:53 CET »
0
Veramente ottimo, grazie per il supporto che mi avete prontamente fornito.

Ho fatto le modifiche ed il tutto funziona, riporto il metodo di Post implementato, a cui ho dovuto però rimuovere l'header, in quanto non viene più veicolato un file XML ma una serie di parametri:

Codice (Java): [Seleziona]
    public boolean send(Position position)
    {
        String url = "http://x.y.x.y/recorder/info.action";
        boolean result = false;
       
        try
        {
                // Using POST here
                HttpPost httpPost = new HttpPost(url);
                // Make sure the server knows what kind of a response we will accept
                //httpPost.addHeader("Accept", "text/xml");
                // Also be sure to tell the server what kind of content we are sending
                //httpPost.addHeader("Content-Type", "application/xml");

                List<NameValuePair> nameValuePairs = new ArrayList<NameValuePair>(1);
                nameValuePairs.add(new BasicNameValuePair("a",  position.getA()));
                nameValuePairs.add(new BasicNameValuePair("b",  position.getB()));
                nameValuePairs.add(new BasicNameValuePair("c",  Double.toString(position.getC())));
                nameValuePairs.add(new BasicNameValuePair("d",  Double.toString(position.getD())));
                nameValuePairs.add(new BasicNameValuePair("e",  Double.toString(position.getE())));
                httpPost.setEntity(new UrlEncodedFormEntity(nameValuePairs));
               
                HttpParams httpParameters = new BasicHttpParams();
                // Set the timeout in milliseconds until a connection is established
                HttpConnectionParams.setConnectionTimeout(httpParameters, 3000);
                // Set the default socket timeout (SO_TIMEOUT) in milliseconds which is the timeout for waiting for data
                HttpConnectionParams.setSoTimeout(httpParameters, 3000);
                DefaultHttpClient httpClient = new DefaultHttpClient(httpParameters);

                // Execute is a blocking call, it's best to call this code in a thread separate from the ui's
                //HttpResponse response = httpClient.execute(targetHost, httpPost);
                httpClient.execute(httpPost);
               
                // Have your way with the response
                result = true;
        }
        catch (Exception ex)
        {
                result = false;
        }
       
        return result;
    }

Ciao,
mariusv5
« Ultima modifica: 05 Dicembre 2010, 12:02:14 CET da JD, Reason: Usa il bbcode java e non quello xml!! xD »

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:HTTP post file XML and reader JAVA with Struts2
« Risposta #6 il: 06 Dicembre 2010, 09:46:17 CET »
0
e non sia mai che qualcuno si ricordi di votare il post, eh?
;)
7h38ugg3r<=>thebugger
Non conosci Java? Allora sei nel posto sbagliato!

http://www.androidpatterns.com/