0

Ich bin neu in Android & Http und versuchen, eine Image Upload-Aufgabe mit Retrofit2 zu erstellen. Ich verwende das Beispiel here.Unterschied zwischen RequestBody und MultipartBody von OkHttp3-Bibliothek?

In diesem Beispiel hat der Autor erklärt, warum wir RequestBody oder MultipartBody verwenden sollten. Ich kann den Unterschied nicht verstehen und wie ich einige Tags (Strings) mit meinem Bild hochladen soll.

Könnte jemand helfen, was Autor bedeutet von:

Die Beschreibung ist nur ein String-Wert innerhalb eines RequestBody Instanz gewickelt. Zweitens gibt es ein weiteres @Part innerhalb der Anfrage: die eigentliche Datei. Wir verwenden die Klasse MultipartBody.Part, die es uns ermöglicht, den tatsächlichen Dateinamen neben den Binärdateidaten mit der Anfrage zu senden.

+0

'MultipartBody.Part' ist eine verschachtelte Klasse und' MultipartBody verwendet werden 'scheint eine Erweiterung von' RequestBody' zu sein, also was ist die Verwirrung? –

Antwort

1

A MultipartBody IS-A (konkrete Umsetzung) RequestBody

public final class MultipartBody extends RequestBody 

Der Hauptunterschied ist, dass ein List<Part> parts die Klasse versehen ist, im Vergleich zu nicht eine mit den RequestBody

RequestBody selbst ist abstrakt, was bedeutet, dass Sie keinen direkt erstellen können. Wenn Sie einen von einer Methode erhalten, ist es einer seiner Nachkommen, wie FormBody

Sie können compare source code für genaue Unterschiede.

+0

das war nützlich zu wissen :) – SpyZip

1

RequestBody: Wird beim einfachen Senden von Daten an den Server verwendet.

MultipartBody: Wird verwendet, um die Daten in einer POST-Anforderung in verschiedene diskrete Typen aufzuteilen und an den Server zu senden.

+0

Für den Inhaltstyp: application/json senden wir einfach ein Modellobjekt, das automatisch in Json konvertiert und über OkHttp gesendet wird. Konvertiert OkHttp intern immer alles in RequestBody und sendet es dann? – user2601981

1

In einfacheren Worten RequestBody für json/String Anfrage verwendet werden, während MultipartBody kann für Dateianforderung (Bilder, Dokumente ..)