Android App Kommunikation mit Server?
Hi,
Meine Android-App soll bestimmte Daten mit einem Server synchronisieren. Sprich immer wieder dahin schicken und bei einem neuen Gerät von dort wieder herholen.
Müsste ich das jetzt mit meinem Wissen realisieren, würde ich einfach über HTTPS eine Post-Anfrage mit den Daten an ein Server schicken, der das mit PHP dann in eine Datenbank schreibt.
Probleme, die ich mir vorstellen kann:
- PHP ist dafür nicht die effezienteste Möglichkeit
- POST-Anfrage evtl. ungeeignet für größere Daten wie Bilder/Videos
Wie machen es professionelle Firmen wie Google?
Grüße
2 Antworten
Genau so.
PHP ist dafür nicht die effezienteste Möglichkeit
Aber die einfachste. Warum sollte es nicht effizient sein?
POST-Anfrage evtl. ungeeignet für größere Daten wie Bilder/Videos
So funktioniert jedes REST-API. Ggf. kannst Du Dein API so entwerfen, dass Du nicht nur die Nutzdaten schickst, sondern diese in ein JSON-Objekt verpackst, wo Du beispielsweise sagst "das ist Block 1 von 10, Block 2 von 10, etc." und dann eben serverseitig das finale Dokument zusammensetzt.
Natürlich. Deswegen wäre ja eine "häppchenweise" Übertragung angeraten. Also beispielsweise immer Blöcke von 1M. Da das Ganze im Idealfalls stateless ist, würde ich folgendes implementieren:
- Schritt: Abrufen eines neuen, eindeutigen "Übertragungs-ID" (z.B. ein GUID)
- Schritt: Blockweises hochladen unter Angabe dieses Übertragungs-ID
- Schritt: Finaler Aufruf "Ich bin fertig" als Auslöser für serverseitige Behandlung dieses Uploads
In Schritt 2 würde ich JSON übertragen, z.B.
{
"transmissionId": "der ID aus Schritt 1",
"currentBlock": 1,
"totalBlocks": n,
"base64Data: "base64-codierte Nutzdaten"
}
Die Serverseite kann die decodierten Nutzdaten beispielsweise in einer Temp-Datei mit dem Transmission-ID als Dateiname ablegen.
In Schritt 3 würde ich JSON übertragen, z.B.
{
"transmissionId": "wie oben",
"originalFileName": "Dateiname der Datei",
"mimeType": "ggf. MIME-Type der Datei"
}
Der Server kann nun mit der Datei machen, was er will.
Google nutzt QUIC, ist ein Protokoll auf UDP basierend.
Okay, wenn ich dann PHP so konfiguriere, dass auch große POST-Anfragen durchgehen, damit man Mal ein Video mit 1GB schicken kann, was passiert bei einer spontanen Netzwerkunterbrechung? Und biete ich dann nicht eine Angriffsfläche, wenn ich das Datenlimit so hoch setze?