Android HTTP Request

This article is also available in: enEnglisch

In diesem Beitrag zeigen wir, wie man mit Android einen HTTP-Request startet. Dazu wird ein PHP-Script auf dem Server aufgerufen. Dieser Script zeigt die IP-Adresse des Clients, sowie die Uhrzeit vom Server an. Damit die App nicht abstürzt, gibt es einen Exception-Handler, der im Fehlerfall einen entsprechenden Fehlercode ausgibt. Der HTTP-Request wird in einem Task ausgeführt, damit das Userinterface nicht durch Ladezeiten beeinträchtigt wird. Kommt vom Server eine Antwort, so wird die TextView entsprechend aktualisiert. In unserem Code-Beispiel haben wir auch einen Button integriert, der den Task erneut ausführen kann.
Android Async Task HTTP Request

Verwendung von HTTPS & POST/GET

Dieses Code-Beispiel funktioniert auch mit einer HTTPS-Verschlüsselung. Dazu wird einfach die URL von HTTP auf HTTPS umgeschreiben. Außerdem können mit dem Beispiel POST & GET Parameter für den Server mitgesendet werden.

Code für den HTTP-Request:

MainActivity: Die privaten Klassen befinden sich in der der MainActivity.java Datei:

private class HttpTask extends AsyncTask<String, Void, String> {
    @Override
    protected String doInBackground(String... strURLs) {
        URL url = null;
        HttpURLConnection conn = null;
        try {
            url = new URL(strURLs[0]);
            conn = (HttpURLConnection) url.openConnection();
            int responseCode = conn.getResponseCode();

            if (responseCode == HttpURLConnection.HTTP_OK) {
                InputStream in = url.openStream();
                BufferedReader reader = new BufferedReader(new InputStreamReader(in));
                StringBuilder result = new StringBuilder();
                String line;
                while ((line = reader.readLine()) != null) {
                    result.append(line);
                }
               return result.toString().replace("/N/", System.getProperty("line.separator"));
            } else {
                return "Fail (" + responseCode + ")";
            }
        } catch (IOException e) {
            return "Unable to connect";
        }
    }

    @Override
    protected void onPostExecute(String result) {
        TextView view_result = (TextView) findViewById(R.id.textView);
        view_result.setText(result);
    }
}

onCreate: In der OnCreate-Void wird der Task mit folgenden Befehl ausgeführt:

new HttpTask().execute("http://testserver.aeq-web.com/android_http_request");

Manifest: In der Manifest wird die Berechtigung für den Internet-Zugriff festgeleget:

<uses-permission android:name="android.permission.INTERNET">