【发布时间】:2015-02-11 07:26:05
【问题描述】:
这可能有点愚蠢的问题,但我很困惑是否可以在 RESTful webservice 下的 POST 方法中接收 @FormParam 中的 JSON 对象
@POST
@Produces(MediaType.APPLICATION_JSON)
@Consumes(MediaType.APPLICATION_JSON)
@Path("/fetch/")
public List<MyObject> getCandidate(@FormParam("CodeList")
List<String> codeList)
{
List<MyObject> myobjects = null;
try {
//some code
} catch (Exception e) {
//some exception if occur
}
return myobjects;
}
如果我想获取表单参数中的用户定义对象怎么办。
@POST
@Produces(MediaType.APPLICATION_JSON)
@Consumes(MediaType.APPLICATION_JSON)
@Path("/fetch/")
public List<MyObject> getCandidate(@FormParam("CodeList")
List<MyObject> formMyObjectList)
{
List<MyObject> myobjects = null;
try {
//some code
} catch (Exception e) {
//some exception if occur
}
return myobjects;
}
提前致谢。
【问题讨论】:
-
嗯,你试过了吗?提示:无论如何它都可以使用
@POST。 -
您需要将其作为字符串获取并自行解组,或者编写 MessageBodyReader。前者可能更容易,见here。尝试使用另一个类型方法参数,您将需要一个自定义提供程序。否则,你为什么要接受它作为表单参数呢?使用表单参数,你应该
@Consume("application/x-www-form-urlencod")。如果你想要application/json,那么只需将正文作为 JSON 发送 -
感谢 Smutje 的回复。如何通过将整个对象发送到 REST 来检查相同的内容。我有很多数据要接收,所以我不想为对象的每个单独元素使用@FormParam。我想将它作为一个完整的对象接收,以便我可以对其执行登录。
-
能否提供你的Controller的代码
标签: java json web-services