1. Nimm jetzt an unserem Uhans - 3. ADVENT - Gewinnspiel teil - Alle Informationen findest Du hier!

Http Request verursacht Fehler

Dieses Thema im Forum "Android App Entwicklung" wurde erstellt von neubs, 08.03.2012.

  1. neubs, 08.03.2012 #1
    neubs

    neubs Threadstarter Neuer Benutzer

    Beiträge:
    12
    Erhaltene Danke:
    0
    Registriert seit:
    07.03.2012
    Hallo Leute,

    ich arbeite mich mit meiner App so langsam vorwärts, aber bei dem aktuellen Problem konnte ich keine Antwort finden. Ich hab bestimmt nur wieder irdendwas vergessen, komm aber net drauf.

    Ich will eine Anfrage an einen Server schicken und will die Antwort prüfen.
    Der erstellte AuthString funktioniert, wenn ich diesen ausgeben lasse und im Browser einfüge bekomme ich eine Antwort zurück. Durch die vielen Log.i() Einträge konnte ich die Zeile des Fehlers rausfinden:
    HttpResponse resp = client.execute(req); Diese Zeile wird nicht mehr ausgeführt, dafür bekomme ich den Fehler "This thread forbids HTTP requests"

    In der Manifest habe ich die Permission "android.permission.INTERNET" hinzugefügt. Ausführen tue ich das ganze in der virtuellen Umgebung.
    Code:
        public Boolean DoAuthWithServer(Context ctx, String setServer, String setCode, String setPIN, String setMaNr) {
            String sAuthString;
            String sAnswer;
            
    
            try {
                sAnswer = "";
                if ((setServer != "") &&  (setCode != "") && (setPIN !="") && (setMaNr !="") ) {
                        
                    AndroidHttpClient client = AndroidHttpClient.newInstance("TxApp");
                    Log.i("log", "client erzeugt");
                    
                    sAuthString = setServer + "/general.php?action=auth&kdnr=" + setCode + "&kdpin=" + setPIN + "&manr" + setMaNr + "phoneid=" + getIMEI(ctx);
                    Log.i("string", sAuthString);
                    
                    HttpGet req = new HttpGet(sAuthString);
                    Log.i("log", "request erzeugt");
                    
    
                    HttpResponse resp = client.execute(req);
                    Log.i("log", "response gesendet");
                    
                    
                    HttpEntity entinity = resp.getEntity();
                    Log.i("log", "entinity bekommen");
                    
                    InputStreamReader reader = new InputStreamReader(entinity.getContent(), "utf-8");
                    // solange die Zeichen des Streams lesen bis er am ende ist (-1)
                    int c = reader.read();
                    while (c!=-1) {
                        sAnswer += (char)c;
                        c = reader.read();             
                    }
                    
                    sAnswer = sAnswer.trim();
                    if ( sAnswer == "OK") {
                        // Server meldete OK - nun die Daten ablegen ... 
                        saveConData(ctx,setServer,setCode, setPIN,setMaNr);
                        
                        return true;
                    } else {
                        return false;
                    }
    
                } else {
                    return false;
                }
            } catch (IOException e) {
                Log.i("log", "error:" + e);
                return false;
            }
        }
    Hoffe mir kann jemdand kurz nen Tip geben was ich schon wieder falsch gemacht habe.

    mfg
    sebastian
     
  2. Neeldarax, 08.03.2012 #2
    Neeldarax

    Neeldarax Erfahrener Benutzer

    Beiträge:
    170
    Erhaltene Danke:
    31
    Registriert seit:
    07.12.2010
    Hi neubs,

    Let me google that for you

    network on main thread exception... diese Woche schon mal in diesem Forum gelesen :)
    Sollte sich das nicht klären, kann ich weiter zur Lösung beisteuern.

    regards
     
  3. neubs, 08.03.2012 #3
    neubs

    neubs Threadstarter Neuer Benutzer

    Beiträge:
    12
    Erhaltene Danke:
    0
    Registriert seit:
    07.03.2012
    Danke,
    hab anscheinend vorhin net ordentlich geschaut. Hab jetzt nen extra Thread erstellt, dann klappts auch :)
    Zumindest ist der Fehler weg, und 2 neue Probleme aufgetaucht ... ich google mal wieder ne Runde.

    mfg
    sebastian
     
  4. S1m, 17.03.2012 #4
    S1m

    S1m Gast

    Auf meinem meinem Nexus S mit der Version 2.3 gingen übrigens die HTTP Get befehle nicht. ich muss da immer post nehmen. ( bekannter bug )
     

Diese Seite empfehlen