PHP Dashboard für HmIP Smartmeter
09.10.2024
Elektronik | Funk | Software
Der Technik-Blog
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.
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.
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">
Auf dieser Seite zeigen wir, wie mit Android die GPS-Position, Geschwindigkeit & Seehöhe sowie der Name der Ortschaft ermittelt werden kann.
WeiterlesenAuf dieser Seite zeigen wir, wie unter Android ein asynchroner HTTP/HTTPS Request gestartet wird und mittels Task verarbeitet wird.
WeiterlesenAEQ-WEB © 2015-2024 All Right Reserved