Android App Kommunikation mit Server?

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.


Bamba675 
Beitragsersteller
 16.03.2021, 13:29

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?

0
ohwehohach  16.03.2021, 13:51
@Bamba675

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:

  1. Schritt: Abrufen eines neuen, eindeutigen "Übertragungs-ID" (z.B. ein GUID)
  2. Schritt: Blockweises hochladen unter Angabe dieses Übertragungs-ID
  3. 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.

0

Google nutzt QUIC, ist ein Protokoll auf UDP basierend.