考虑以下功能:
@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表单数据请求时,不会调用该函数。为什么在后一种情况下没有调用它?以及如何制作适用于后一种要求的功能。
答案 0 :(得分:2)
是的application/x-www-form-urlencoded
和multipart/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{
}
另见: