Ich generiere automatisch die JAX-RS-Schnittstellen von Swagger. Ich benutze Jersey 2.25.1.JAX-RS/Jersey 2 Dateidownload - Gibt es eine gemeinsame API für Server und generierten Client-Proxy
Alles funktioniert gut für die meisten Anwendungsfälle. Wir haben die gleiche Schnittstelle für die Server- und Client-Teile. Clients werden über die Schnittstelle mit org.glassfish.jersey.client.proxy.WebResourceFactory
generiert.
Jetzt muss ich Datei-Download über Streaming (Dateien werden riesig sein, in der Regel im Gigabyte-Bereich, so dass Streaming erforderlich ist) zu implementieren.
kann ich die folgende Signatur für den Server verwenden:
@GET
@Path("/DownloadFile")
@Produces({"application/octet-stream"})
StreamingOutput downloadFileUniqueId();
Aber StreamingOutput
kann nicht offensichtlich in dem Client verwendet werden.
Gibt es eine Funktion in JAX-RS/Jersey, um eine gemeinsame Schnittstelle zwischen Server und Client zu haben?
Ich habe für den Upload zu sehen ist, ist das möglich FormDataMultiPart
verwenden, würde ich eine ähnliche Lösung wie zum Download ...
Im Client-Code müssen Sie die Response-Entity als Eingabestream lesen - 'InputStream responseStream = response.readEntity (InputStream.class);' und dann diesen Stream lesen, um den tatsächlichen Dateiinhalt abzurufen. –
Versuchen Sie, einen Antwortrückgabetyp zu verwenden, und rufen Sie dann im Clientcode 'response.get (InputStream.class)' auf – vikarjramun