【发布时间】:2015-10-06 15:35:41
【问题描述】:
我正在尝试制作基于运动衫的 Web 服务。在这种情况下,如果我使用 @FormParam 获取输入参数,它可以正常工作:
@POST
@Consumes({MediaType.TEXT_PLAIN, MediaType.APPLICATION_XML, MediaType.APPLICATION_JSON, MediaType.TEXT_HTML, "application/x-www-form-urlencoded"})
@Path("/registeruser")
public Response registerUser(@FormParam ("email") String email,@FormParam ("name") String name ){
System.out.println("Inside register device");
System.out.println("registered" + email);
return null;
}
但是当我尝试使用 @BeanParam 时它不起作用并给了我一个异常
@POST
@Consumes({MediaType.TEXT_PLAIN, MediaType.APPLICATION_XML, MediaType.APPLICATION_JSON, MediaType.TEXT_HTML, "application/x-www-form-urlencoded"})
@Path("/registeruser")
public Response registerUser(@BeanParam UserForm userForm ){
System.out.println("Inside register device");
service.registerUser(userForm);
System.out.println("registered" + userForm.getEmail());
return null;
}
找不到 Java 类 com.stc.dms.forms.UserForm、Java 类型类 com.stc.dms.forms.UserForm 和 MIME 媒体类型 application/octet-stream 的消息正文阅读器。
【问题讨论】:
-
1) 为什么要接受 GET 请求的请求正文? 2)您使用的是什么球衣版本? 3) 你是否能够让@BeanParam 在其他情况下工作,比如使用一些@QueryParams?
-
不,我做不到。它的 POST 请求只是我错误地输入了 GET
-
你现在可以试试。使用只有几个 @QueryParams 的 bean 制作一个不同的 GET 方法。
-
我刚刚用@QueryParam 尝试过,它工作正常,但我不想继续添加这样的参数。我想 Object 作为输入
-
你为什么要消费这么多不同的媒体类型?必须尝试将其限制为 APPLICATION_FORM_URLENCODED,并确保在客户端上将 Content-Type 设置为 application/x-www-form-urlencded?