Http Request verursacht Fehler

N

neubs

Neues Mitglied
0
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
 
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
 
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
 
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 )
 

Ähnliche Themen

L
Antworten
15
Aufrufe
906
jogimuc
J
D
Antworten
3
Aufrufe
448
jogimuc
J
M
Antworten
1
Aufrufe
1.028
wilco
W
Zurück
Oben Unten