Ich arbeite an einer Stundenplan-App für meine Schule. Die App ist fast fertig, das einzige, was fehlt, ist das Login und Herunterladen der Daten von der Webseite:
https://vertretung.fps-niebuell.de/cgi-bin/klasse.cgi?ziel=heute&klasse=5a.htm
Meine Frage ist also: Wie kann ich meine App so programmieren, dass sie Daten von dieser Webseite herunterlädt, für die ein Login erforderlich ist?
Das Log gibt den Fehler aus:
https://vertretung.fps-niebuell.de/cgi-bin/klasse.cgi?ziel=heute&klasse=5a.htm
Meine Frage ist also: Wie kann ich meine App so programmieren, dass sie Daten von dieser Webseite herunterlädt, für die ein Login erforderlich ist?
Java:
public class DownloadTask extends AsyncTask<String, Void, String> {
@Override
protected String doInBackground(String... urls) {
String result = "";
URL url;
HttpURLConnection httpURLConnection;
try {
url = new URL(urls[0]);
httpURLConnection = (HttpURLConnection) url.openConnection();
httpURLConnection.setRequestProperty("Authorization", "Basic " +
Arrays.toString(Base64.encode("username:password".getBytes(), Base64.NO_WRAP)));
InputStream inputStream = httpURLConnection.getInputStream();
InputStreamReader inputStreamReader = new InputStreamReader(inputStream);
int data = inputStreamReader.read();
while (data != -1) {
char current = (char) data;
result += current;
data = inputStreamReader.read();
}
return result;
} catch (MalformedURLException e) {
e.printStackTrace();
return "failed";
} catch (Exception e) {
e.printStackTrace();
return "failed";
}
}
}
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
DownloadTask task = new DownloadTask();
String result = null;
try {
result = task.execute("https://vertretung.fps-niebuell.de/cgi-bin/klasse.cgi?ziel=heute&klasse=5a.htm").get();
} catch (ExecutionException e) {
e.printStackTrace();
} catch (InterruptedException e) {
e.printStackTrace();
} catch (Exception e) {
e.printStackTrace();
}
Log.i("Info: ", result);
}
Das Log gibt den Fehler aus:
java.io.FileNotFoundException: https://vertretung.fps-niebuell.de/cgi-bin/klasse.cgi?ziel=heute&klasse=5a.htm
com.android.okhttp.internal.huc.HttpURLConnectionImpl.getInputStream(HttpURLConnectionImpl.java:251)