【问题标题】:Take JSON with @POST on Restful在 Restful 上使用带有 @POST 的 JSON
【发布时间】:2016-01-10 17:00:52
【问题描述】:

我正在尝试在 POST 方法中获取 JSON 值,但我不知道该怎么做。

这是我的代码:

@POST
@Path("/contacts")
@Consumes({"application/json"})
public void addContact() {

    HttpSession session = request.getSession(true);

    UserPK user = new UserPK((String) session.getAttribute("username"));
    //dest = TAKE JSON VALUE

    dao.addContact(user, dest);
}

我使用 firefox RestClient 发送 JSON 值,外观如下:

{"param1":"value"}

如何获取这个值?

我们也有这个错误信息:415 Unsupported Media Type

谢谢。

【问题讨论】:

  • 你能再解释一下吗? “dest”是您的 JSON 对象,还是只是您提取的 JSON 对象中的值?什么时候出现错误信息?

标签: java json rest post


【解决方案1】:

确保您实际上是在发送帖子,并且您的请求的内容类型是 application/json。要使用 spring MVC 使用它,您可以使用 @RequestBody 注释:

@POST
@Path("/contacts")
@Consumes({"application/json"})
public void addContact(@RequestBody MyClass c) {

其中 MyClass 是一个表示请求对象的简单 java 类(即,在这种情况下,您只需要一个名为 param1 的 String 类变量。

【讨论】:

    【解决方案2】:

    如果您使用的是 springmvc,它带有 json 的消息转换器。 您可能必须将您的 pojo 声明为方法中的参数。

    【讨论】:

      【解决方案3】:

      问题是来自 firefox 的插件不允许我修改标题,所以当我尝试使用邮递员在 chrome 上使用 text/plain 时,它起作用了。

      还是谢谢。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2019-05-04
        • 2013-07-27
        • 2011-11-15
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多