Autor Wątek: Android wysyłanie do serwera zmiennych metodą GET  (Przeczytany 1157 razy)

Offline Yabol

  • Użytkownik

# Luty 02, 2014, 22:17:43
Witam!

Piszę właśnie swoją aplikację która ma na celu wysłanie do serwera metodą GET pewnych wartości i odczytania tego co zwróci serwer, kod do wysłania wygląda tak:
public void httpcon() {
BufferedReader in = null;
    String data = null;

    try{
           
    URI website = new URI("http://www.mystr.esy.es/index.php?value=wartosc&nextvalue=27");

           HttpClient client = new DefaultHttpClient();

           HttpGet request = new HttpGet();
           request.setURI(website);
           HttpResponse response = client.execute(request);
           
           in = new BufferedReader(new InputStreamReader(response.getEntity().getContent()));
           tv.setText("Połączono");
           
   
    }catch(Exception e){
           tv.setText("Error");
           Log.e("log_tag", "Error in http connection "+e.toString());
       }

}
Otrzymuje takie błędy w konsoli: "error in http connection android.os.networkonmainthreadexception"
Z internetem łącze się poprzez wifi, i pytanie czy android.permission.INTERNET zezwala mi na dostęp do internetu poprzez wifi i gsm czy do tego są osobne zezwolenia ?
Druga sprawa to podobno taki kod jak pokazałem powyżej musi działać w osobnym wątku, inaczej nie ma opcji żeby to działało, pytanie dlaczego ?

Offline Mr. Spam

  • Miłośnik przetworów mięsnych

Offline deadeye

  • Użytkownik

# Luty 02, 2014, 23:56:58
Przeczytaj dokładnie po rozdzieleniu słów nazwę wyjątku i masz wytłumaczone jak na tacy. Uprawnienia tutaj nie mają związku, internet wystarcza.
A dlaczego ten wyjątek? Gdybyś wykonywał na głównym wątku, to interfejs użytkownika by się zawieszał do czasu odpowiedzi, co jest niedopuszczalne.
Zainteresuj się http://developer.android.com/reference/android/os/AsyncTask.html
w doInBackground wywołujesz twoją metodę, a w onPostExecute wyświetlasz wynik.
A gdy już to ogarniesz, to lepszym sposobem jest https://github.com/octo-online/robospice

Offline Yabol

  • Użytkownik

# Luty 03, 2014, 00:08:38
Racja... ale nie rozumiem dlaczego w takim kodzie LogCat wyrzuca mi czasami błędy Tag: Trace Text:error opening trace file: No such file or directory

Offline ArekBal

  • Użytkownik

# Luty 03, 2014, 03:06:50
A dlaczego ten wyjątek? Gdybyś wykonywał na głównym wątku, to interfejs użytkownika by się zawieszał do czasu odpowiedzi, co jest niedopuszczalne.
Zbytnie uproszczenie.
Spróbuj któregoś przeładowania z ResponseHandlerem. handler powinien się wywołać gdy "pojawi" się odpowiedź. Do tego nie powinien być potrzebny oddzielny wątek.