2013-03-26 5 views
1

내 서비스에 전달 된 json을 사용하여 xls 파일을 반환하는 서비스를 작성하고 있습니다. JAX-RS와 WINk를 사용하고 있습니다. json이 내 서비스에 전달한 것이 URL에서 @QueryParam이 되기에는 너무 복잡하기 때문에 @GET 대신 @POST 메소드를 사용하고 싶습니다.get 대신 post 메서드를 사용하여 안정적인 다운로드 서비스 구현

질문 :@GET을 사용하는 경우 서비스에 의해 반환 된 파일을 다운로드하기 위해 브라우저에 URL을 붙여 넣을 수 있지만, @POST를 사용하면 서비스에서 반환 한 파일을 어떻게 다운로드 할 수 있습니까? ?

사용자가이 서비스에 요청을 게시하면 "OPEN", "다운로드"또는 "취소"중 하나를 묻는 창이 나타납니다. 크롬과 IE의 저장 대화 상자를 표시하는 마법처럼

<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(); 
    } 
} 

작품 :

답변

2

가장 간단한 방법은 HTML form을 사용하는 것입니다.

+0

덕분에! – doranT

+0

특히 나를 좋아하는 또 다른 방법은 JQuery입니다. Look ['jQuery.post()'] (http://stackoverflow.com/a/3506018/870248). –