Ich habe versucht, die verschiedenen Möglichkeiten in Stackoverflow gegeben, vielleicht habe ich etwas verpasst.
Ich habe einen Android-Client (dessen Code ich nicht ändern kann), der gerade ein Bild wie folgt bekommt:
%Vor% Dabei ist url
der Speicherort des Bildes (statische Ressource auf CDN). Jetzt muss sich mein Spring Boot-API-Endpunkt auf die gleiche Weise wie eine Dateiressource verhalten, damit derselbe Code Bilder von der API abrufen kann (Spring-Boot-Version 1.3.3).
So habe ich das:
%Vor% Wenn der Android-Code versucht, http://someurl/image1.jpg
zu erhalten, erhalte ich diesen Fehler in meinen Protokollen:
Behebung der Ausnahme vom Handler [public org.springframework.http.ResponseEntity com.myproject.MyController.getImage (java.lang.String)]: org.springframework.web.HttpMediaTypeNotAcceptableException: Konnte nicht finde eine akzeptable Darstellung
Derselbe Fehler tritt auf, wenn ich http://someurl/image1.jpg
in einen Browser stopfe.
Seltsamerweise sind meine Tests ok:
%Vor%Wie bekomme ich das, um sich wie ein normales Bild zu verhalten? (Hinweis: Ich kann den Inhaltstyp-Header, den der Android-Code sendet, nicht ändern)
BEARBEITEN
Code nach Kommentaren (Inhaltstyp festlegen, produces
herausnehmen):
In einem Browser scheint das nur einen stringierten Müll zu geben (Byte zu Zeichen, denke ich). In Android ist es kein Fehler, aber das Bild wird nicht angezeigt.
Endlich behoben ... Ich musste meiner ByteArrayHttpMessageConverter
Unterklasse% WebMvcConfigurerAdapter
hinzufügen:
Falls Sie den Datei / MIME-Typ nicht kennen, können Sie dies tun .... Ich habe das getan, wo ich eine hochgeladene Datei nehme und den Dateinamen durch eine GUID und keine Erweiterung und Browser / Smartphones ersetze sind in der Lage, das Bild ohne Probleme zu laden. Die zweite besteht darin, eine Datei zum Herunterladen bereitzustellen.
%Vor%Tags und Links java spring-mvc spring-boot