我從Swagger自動生成JAX-RS接口。 我使用Jersey 2.25.1。JAX-RS/Jersey 2文件下載 - 是否有服務器和生成客戶端代理的公共API
對於大多數使用情況,所有工作都很好。我們有相同的服務器和客戶端部件的接口。 客戶端從與org.glassfish.jersey.client.proxy.WebResourceFactory
的接口生成。
現在我需要通過流式傳輸來實現文件下載(文件會很大,通常在千兆字節範圍內,因此需要流式傳輸)。
我可以使用下面的簽名服務器:
@GET
@Path("/DownloadFile")
@Produces({"application/octet-stream"})
StreamingOutput downloadFileUniqueId();
但StreamingOutput
不能很顯然,在客戶端使用。
JAX-RS/Jersey中是否有任何功能在服務器和客戶端之間具有通用接口?
我見過的上傳,這是可能的使用FormDataMultiPart
,我想下載一個類似的解決方案......
在客戶端代碼中,您必須讀取響應實體作爲輸入流 - InputStream responseStream = response.readEntity(InputStream.class);然後讀取此流以獲取實際的文件內容。 –
嘗試使用Response返回類型,然後在客戶端代碼中,可以調用'response.get(InputStream.class)'' – vikarjramun