2012-03-31 15 views
0

Ich habe ein Login-Formular zur Zeit Anmeldeparameter und Anmeldung bei einer Website mit HTTP-Post Request. Ich bin unsicher über den Server-Typ, so dass das Problem sein könnte. Sobald es die Anmeldeinformationen annimmt, konvertiert es den Eingabestream in eine Zeichenfolge (den gesamten HTML-Code) und setzt diese in eine Textansicht. Hier ist die Login:Android Login zur Website - Immer zurück Login-Seite Daten

private void postLoginData() throws ClientProtocolException, IOException { 
    // Create a new HttpClient and Post Header 
    HttpClient httpclient = new DefaultHttpClient(); 
    HttpPost httppost = new HttpPost("loginurl"); // Changed for question. 

    try { 
     // Add your data 
     List<NameValuePair> nameValuePairs = new ArrayList<NameValuePair>(2); 
     nameValuePairs.add(new BasicNameValuePair("sid", "username")); 
     nameValuePairs.add(new BasicNameValuePair("pin", "pass")); 
     httppost.setEntity(new UrlEncodedFormEntity(nameValuePairs)); 

     // Execute HTTP Post Request 
     HttpResponse response = httpclient.execute(httppost); 
     String finalres = inputStreamToString(response.getEntity().getContent()).toString(); 
     tvStatus.setText(finalres); 

    } catch (ClientProtocolException e) { 
     // TODO Auto-generated catch block 
    } catch (IOException e) { 
     // TODO Auto-generated catch block 
    } 
} 

Und hier ist der inputStreamToString()

private StringBuilder inputStreamToString(InputStream is) throws IOException { 
    String line = ""; 
    StringBuilder total = new StringBuilder(); 

    // Wrap a BufferedReader around the InputStream 
    BufferedReader rd = new BufferedReader(new InputStreamReader(is)); 

    // Read response until the end 
    while ((line = rd.readLine()) != null) { 
     total.append(line); 
    } 

    // Return full string 
    return total; 
} 

Das Problem ist, dass es immer wieder nur den HTML-Code für die Login-Seite. Wenn ein Benutzer die Anmeldung auf der Site fehlschlägt, wird eine kleine Nachricht angezeigt. Selbst wenn ich falsche Anmeldeinformationen hinzufüge, zeigt es nichts anderes an. Ebenso, wenn ich den richtigen Login hinzufüge, zeigt es mir immer noch nur den Login-HTML-Seiten an.

+0

Ist es notwendig, dass Sie den Inhalt der Seite erhalten, nachdem Sie eingeloggt sind? Überprüfen Sie den HTTP-Status auf 200 oder 401. Sie müssen die Daten nicht abrufen, wenn sie sich nur authentifizieren möchten. –

+0

Können Sie mich in die richtige Richtung in Bezug auf die Überprüfung des HTTP-Status zeigen? Ich habe ein bisschen gegoogelt und kann es nicht finden. –

+0

Schreiben response.getStatusLine(). GetStatusCode(); Logcat. – yorkw

Antwort

2

Um nach HTTP-Status zu suchen. Tun Sie etwas wie das

if (response.getStatusLine().getStatusCode() == HttpStatus.SC_OK) { 
    //Do Something here.. I'm logged in. 
} else if (response.getStatusLine().getStatusCode() == HttpStatus.SC_UNAUTHORIZED) { 
    // Do Something here. Access Denied. 
} else { 
    // IF BOTH CASES not found e.g (unknown host and etc.) 
} 

Dies wird genau so, wie Sie für den Status überprüfen möchten. danke

+0

Es gibt immer das erste Ergebnis zurück. –

+0

Wenn es in der ersten Bedingung kommt, bedeutet dies, dass Sie erfolgreich angemeldet sind. Nun liegt es an Ihnen, was Sie mit dieser Authentifizierung tun müssen. –

+0

Das Problem ist, dass selbst wenn ich eine falsche Anmeldung eingeben, das gleiche Ergebnis auftritt. –

1

Ich schätze das Problem ist this question ähnlich. Überprüfen Sie es, es gibt einige Lösungen, die für Sie bei der Lösung funktionieren könnten.

Verwandte Themen