1

我正在编写一个服务来使用传递给我的服务的 json 返回一个 xls 文件。我正在使用 JAX-RS 和 WINk。由于传递给我的服务的 json 过于复杂,无法成为 url 中的 @QueryParam,所以我想使用 @POST 方法而不是 @GET。

问题是:如果我使用@GET,我知道我可以在浏览器中粘贴url来下载服务返回的文件,但是如果我使用@POST,我该如何下载服务返回的文件?

目标是当用户向该服务发布请求时,会弹出一个窗口询问“打开”、“下载”或“取消”。

4

1 回答 1

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 中显示保存对话框的魅力。

于 2013-03-26T02:43:00.623 回答