Autore Topic: Creazione App Client Android  (Letto 668 volte)

Offline Saxx

  • Nuovo arrivato
  • *
  • Post: 6
  • Respect: +1
    • Mostra profilo
  • Dispositivo Android:
    Galaxy S3
Creazione App Client Android
« il: 06 Aprile 2013, 11:38:35 CEST »
0
Salve ragazzi sono nuovo nello sviluppo di android quindi perdonatemi se commetto errori :-[
Vi spiego devo creare un applicazione che mandi dei comandi a un server  sulla mia rete domestica
É da più di una settimana che provo a scrivere righe di codice ma nn sto riuscendo a far avvenire una sola richiesta da parte del client al server
Ho provato svariati codici come l'utilizzo dell'http poi le url e persino i socket ma credo, giustamente, di fare degli errori ma nn so quali sono
potreste indicarmi che ne so qualche guida che faccia al mio caso o magari aiutarmi voi a capire?
vi ringrazio in anticipo  ;-)

Offline rs94

  • Utente normale
  • ***
  • Post: 227
  • Respect: +21
    • Mostra profilo
  • Dispositivo Android:
    Sony Ericsson Xperia Arc S
  • Sistema operativo:
    Windows 8
Re:Creazione App Client Android
« Risposta #1 il: 06 Aprile 2013, 12:54:07 CEST »
0
Senza codice o altre informazioni è difficile aiutarti.
Comunque prova ad usare questa libreria. Fa tutto il lavoro "sporco" per te: http://loopj.com/android-async-http/
L'unica certezza è il dubbio.
Dubitare di se stessi è il primo segno di intelligenza.

Offline Saxx

  • Nuovo arrivato
  • *
  • Post: 6
  • Respect: +1
    • Mostra profilo
  • Dispositivo Android:
    Galaxy S3
Re:Creazione App Client Android
« Risposta #2 il: 06 Aprile 2013, 13:16:21 CEST »
0
do una spiegazione più precisa
ho un piccolo hardware che mi fa da server connesso alla mia rete nello specifico è arduino ethernet e l'ho programmato in maniera tale che nn appena un client effettua una richiesta mi manda un segnale. il mio obiettivo nn è questo bensì cercare di far comunicare un app con un server ovvero l'app manda un comando e il server lo esegue
per iniziare ad imparare volevo creare un'activity con un pulsante mediante i quale mandavo la richiesta al server una semplice chiamata all'ip ma nn ci sto riuscendo...
di seguito metto il codice
Codice (Java): [Seleziona]
import java.io.IOException;
import java.net.MalformedURLException;
import java.net.Socket;
import java.net.URL;
import java.net.URLConnection;
import org.apache.http.client.HttpClient;
import org.apache.http.impl.client.DefaultHttpClient;

import android.os.Bundle;
import android.app.Activity;
import android.view.Menu;
import android.view.View;
import android.widget.Button;
import android.widget.TextView;
import android.widget.Toast;

public class MainActivity extends Activity {
private static final String Log = null;
TextView txt;
Button btnSend;
Socket skt;
String IpAddress="http://192.168.11.111";
        HttpClient httpclient = new DefaultHttpClient();
        @Override
        protected void onCreate(Bundle savedInstanceState) {
                super.onCreate(savedInstanceState);
                setContentView(R.layout.activity_main);
                txt=(TextView)findViewById(R.id.textView1);
                btnSend=(Button)findViewById(R.id.button1);
               
                }
        public void Send(View v) {
               
        txt.setText(IpAddress);
        URL url=null;
        try{url=new URL(IpAddress);
        txt.setText(IpAddress);
        }catch(MalformedURLException e){
                Toast.makeText(this, "Errore url: "+ e, Toast.LENGTH_LONG).show();
                        }
                URLConnection conn=null;
                                        try{
                                txt.setText("Connessione in corso...");
                                conn=url.openConnection();
                                conn.connect();
                                txt.setText("Connessione ok");
                               
                        } catch (IOException e) {
                                // TODO Auto-generated catch block
                                e.printStackTrace();
                        }finally{
                        }
                                        }
                       
       
       
al punto conn.connect() si blocca l'app e sono fermo
Spero di poter iniziare a capire qualcosa col vostro aiuto :'(
« Ultima modifica: 06 Aprile 2013, 13:27:26 CEST da Saxx »

Offline Saxx

  • Nuovo arrivato
  • *
  • Post: 6
  • Respect: +1
    • Mostra profilo
  • Dispositivo Android:
    Galaxy S3
Re:Creazione App Client Android
« Risposta #3 il: 09 Aprile 2013, 07:18:09 CEST »
0
ok ragazzi nonostante il non tanto aiuto ho risolto tutto.
non ho utilizzato le librerie async ma mi sono gestito un thread in maniera manuale e ho risolto e capito gli errori che commettevo  :-P
a questo punto posso ritenere il topic concluso
 a presto

Offline andrea_g

  • Utente junior
  • **
  • Post: 58
  • Respect: +1
    • andreagorfer
    • @andreagorfer
    • Mostra profilo
    • Bondon's Crew
  • Dispositivo Android:
    Galaxy S3
  • Sistema operativo:
    Max OS X 10.9.2
Re:Creazione App Client Android
« Risposta #4 il: 11 Aprile 2013, 09:57:50 CEST »
0
Potresti pubblicare il codice in modo che posso dare un'occhiata anch'io?  :D Grazie mille!
Andrea

Offline Saxx

  • Nuovo arrivato
  • *
  • Post: 6
  • Respect: +1
    • Mostra profilo
  • Dispositivo Android:
    Galaxy S3
Re:Creazione App Client Android
« Risposta #5 il: 11 Aprile 2013, 19:44:11 CEST »
+1
Ho creato la classe HttpRequest implementando il metodo Runnable()
nel quale ho fatto gestire la richiesta Http
Codice (Java): [Seleziona]
public class HttpRequest implements Runnable {
private Handler myHandler;
private String ipAddr;
private String result;
private Message msg;
public HttpRequest(Handler h, String IpAddress){
        this.myHandler=h;
        this.ipAddr=IpAddress;
}
        @Override
        public void run() {
                try{
                        HttpClient client = new DefaultHttpClient();  

                        URI getURL = new URI(ipAddr);
                        HttpGet get = new HttpGet(getURL);
                       HttpResponse responseGet = new BasicHttpResponse(HttpVersion.HTTP_1_1, HttpStatus.SC_OK, "Ok");
                      responseGet=client.execute(get);
                      Log.v("response code", responseGet.getStatusLine()
                      .getStatusCode() + "");
                        HttpEntity resEntityGet = responseGet.getEntity();
                         if (resEntityGet != null) {  
                         
                         
                                 result=EntityUtils.toString(responseGet.getEntity());
                       msg=myHandler.obtainMessage(0,result);
                        myHandler.sendMessage(msg);    
                       
                           
                       }
                        } catch (Exception e) {

                                result="Errore: "+ e.toString();
                                msg=myHandler.obtainMessage(0,result);
                myHandler.sendMessage(msg);    

                        }      
        }
               
}

successivamente nel main dell'activity ho gestito tutto tramite Thread in quanto ho capito che le chiamate http nn le potevo gestire direttamente nel MainThread pena restituzione del MainThreadException
Codice (Java): [Seleziona]
 IpAddress="http://192.168.11.111/";
                try {

             HttpRequest request=new HttpRequest(handler,IpAddress);
             Thread myThread= new Thread(request);
            myThread.start();
               
                } catch (Exception e) {

                        Toast.makeText(this, e.toString(), Toast.LENGTH_LONG).show();

                }      

 ;-) buttaci un occhio