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.
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. –
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. –
Schreiben response.getStatusLine(). GetStatusCode(); Logcat. – yorkw