Jersey Grizzly Rest如何提取“表单数据”参数

时间:2015-07-27 10:37:03

标签: rest post jersey multipartform-data grizzly

考虑以下功能:

@POST
    @Path("/handle_response")
    @Produces(MediaType.APPLICATION_JSON)
    public ResponseJsonBean handle(@FormParam("first") Integer first, @FormParam("second") Integer second) 
    {
        ////// bla bla
    }

当我发出POST x-www-form-urlencoded请求时,会调用上面的函数。但是当我发出POST表单数据请求时,不会调用该函数。为什么在后一种情况下没有调用它?以及如何制作适用于后一种要求的功能。

1 个答案:

答案 0 :(得分:2)

是的application/x-www-form-urlencodedmultipart/form-data是完全不同的类型和格式。通过发送类型发现读取请求的正确提供程序。

对于多部分支持,您应该添加Jersey多部分依赖

<dependency>
    <groupId>org.glassfish.jersey.media</groupId>
    <artifactId>jersey-media-multipart</artifactId>
    <version>${jersey2.version}</version>
</dependency>

然后在您的资源方法中执行类似

的操作
@POST
@Path("/upload")
@Produces(MediaType.APPLICATION_JSON)
@Consumes({MediaType.MULTIPART_FORM_DATA})
public Response uploadFile(
        @FormDataParam("file") InputStream fileInputStream,
        @FormDataParam("file") FormDataContentDisposition cdh) throws Exception{
}

另见: