我正在编写一个服务,通过使用传递给我的服务的json返回一个xls文件。 我正在使用JAX-RS和WINK。 由于传递给我的服务的json太复杂而不能成为url中的@QueryParam,所以我想使用@POST方法而不是@GET。
问题是: 如果我使用@GET,我知道我可以在浏览器中粘贴url来下载服务返回的文件,但是如果我使用@POST,我该如何下载该服务返回的文件?
目标是当用户将请求发布到此服务时,会弹出一个窗口,询问“打开”,“下载”或“取消”。
答案 0 :(得分:2)
最简单的方法是使用HTML form
:
<form action="rest/report/users" method="post">
ID: <input type="text" name="id"><br>
<input type="submit">
</form>
和
@Path("/report")
public class ReportResource {
@Path("users")
@POST
@Produces(MediaTypeUtils.MS_EXCEL)
public Response getUsers(@FormParam("id") String id ) {
// Build the report and get the instance of java.io.File
ResponseBuilder response = Response.ok(file);
response.header("Content-Disposition","attachment; filename=report.xls");
return response.build();
}
}
像魅力一样显示Chrome和IE中的保存对话框。