Login zu einer Webseite mit HTTP-Basic-Authentifizierung über Android-app
Hab ich schon gesucht viele Möglichkeiten, dies zu tun, aber ich finde keine funktionierenden Weg.
Ich soll zur Anmeldung an dieser site:
http://www.besselgymnasium.de/fileadmin/Vertretung/Vertretungsplan_Schueler/subst_001.htm die HTTP Basic Authentication verwendet mit meine android-app zum Auslesen der source-code, aber ich weiß nicht, wie ich konnte, ließ meine app automatisch einloggen.
Könnte jemand mir sagen, wie diese erreicht werden kann?
Das Letzte, was ich ausprobiert habe, war:
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
quellcode = (TextView) findViewById(com.example.MainActivity.R.id.TextView01);
geschichte = (TextView) findViewById(com.example.MainActivity.R.id.geschichte);
datum1 = (TextView) findViewById(com.example.MainActivity.R.id.datum1);
datum1.setText("25.03.2014");
readWebpage(quellcode);
}
@Override
public boolean onCreateOptionsMenu(Menu menu) {
//Inflate the menu; this adds items to the action bar if it is present.
//getMenuInflater().inflate(R.menu.main, menu);
return true;
}
private class DownloadWebPageTask extends AsyncTask<String, Void, String> {
@Override
protected String doInBackground(String... urls) {
String credentials = "username" + ":" + "password";
Base64.encodeToString(credentials.getBytes(), Base64.DEFAULT);
String response = "";
for (String url : urls) {
DefaultHttpClient client = new DefaultHttpClient();
HttpGet httpGet = new HttpGet(url);
httpGet.setHeader("Authorization", "Basic "+credentials);
try {
HttpResponse execute = client.execute(httpGet);
InputStream content = execute.getEntity().getContent();
BufferedReader buffer = new BufferedReader(new InputStreamReader(content));
String s = "";
while ((s = buffer.readLine()) != null) {
response += s;
}
} catch (Exception e) {
e.printStackTrace();
}
}
return response;
}
//END OF READING
@Override
protected void onPostExecute(String result) {
quellcode.setText(result);
}
}
public void readWebpage(View view) {
DownloadWebPageTask task = new DownloadWebPageTask();
task.execute(new String[]{"http://username:[email protected]/fileadmin/Vertretung/Vertretungsplan_Schueler/subst_001.htm"});
}
}
Du musst angemeldet sein, um einen Kommentar abzugeben.
Zugriff auf die Website, die Sie Hinzugefügt haben, um das Authorization-header.
Erste, Sie haben zu verketten und Kodierung mit base64 Ihre Anmeldeinformationen:
dann fügen Sie diesen header, um Ihre httpClient:
Fühlen Sie sich frei zu Fragen, wenn Sie weitere Hilfe benötigen.
Base64.encodeToString("text".getBytes(), Base64.DEFAULT)
oder anderen base64-Bibliothek um dies zu erreichen\n
aufcredBase64
. siehe aktualisierte Antwort.credBase64
string in den header nichtcredentials
Versuchen Sie es mit SharedPreferences. Auf diese Weise werden Sie in der Lage, zum speichern der login-Daten für das erste mal, wenn Sie starten Sie die app. Neben der Zeit ab, Sie können Lesen, diese Werte.
Folgen Sie dieser Anleitung für die SharedPreferences:
Tutorials Zeigen