Ich bin kürzlich von der Verwendung von Retrofit 1.9 zu Retrofit 2 übergegangen und habe ein Problem beim Veröffentlichen binärer Daten.Korrekte Möglichkeit, binäre Daten mit Retrofit 2.0 zu schreiben
Als ich Retrofit 1.9 verwendet habe, konnte ich eine TypedByteArray
senden, die byte[]
Daten als @Body
einer Anfrage enthielt. Das nächstgelegene entspricht TypedByteArray
scheint RequestBody
zu sein, die ich verwende, wie folgt:
final ByteArrayOutputStream byteOutputStream = new ByteArrayOutputStream();
thumbnail.compress(Bitmap.CompressFormat.JPEG, 5, byteOutputStream);
final byte[] thumbnailBytes = byteOutputStream.toByteArray();
final RequestBody thumbnailRequestBody = RequestBody.create(MediaType.parse("image/jpeg"), thumbnailBytes);
Der Code, die Anforderung zu erzeugen, ist unter:
Headers("Content-Type: image/jpeg")
@POST("/thumbnail")
Call<Void> uploadThumbnail(@Body RequestBody thumbnailContent);
Allerdings scheint es, dass Retrofit zu versuchen werden können Analysieren Sie das RequestBody
als JSON-Objekt, da die Daten, die tatsächlich an den Server gesendet werden, {}
sind.
Irgendwelche Ratschläge oder Anleitungen, wie man binäre Daten korrekt postet, würde geschätzt werden. Vielen Dank.
statt mit '@ RequestBody', verwenden Sie' @ Teilwerk' –
Sie können 'Anruf verwenden postFile (@Part MultipartBody.Part Datei, @Part ("Beschreibung") RequestBody Beschreibung); '. Bitte lesen Sie http://StackOverflow.com/questions/36491096/retrofit-multipart-request-required-multipartfile-parameter-file-is-not-pre/36514662#36514662 –
BNK