【问题标题】:Java Play Framework Json BadRequestJava Play 框架 Json BadRequest
【发布时间】:2015-04-14 03:59:50
【问题描述】:

我是 Play Framework 的新手,我正在做一个教程,但我有一个小问题。

我正在尝试发送 JSON POST 请求,看看我是否可以正确获取请求。

我在 Chrome 中使用“Advanced Rest Client”进行测试并发送 POST 消息。

我不知道为什么,每次发送任何消息时都会收到错误请求错误消息。

我的代码:

@BodyParser.Of(BodyParser.Json.class)
public static Result createRutines(){
    JsonNode json=request().body().asJson();
    if(json==null){
        return badRequest("The JSON is Empy");
    }else{
        return ok("Arrived");
    }
}

我将感谢您的所有帮助。

我无法附上 Advance Rest Client 的图片,因为我在这里没有足够的声誉。

【问题讨论】:

  • 能否请您添加响应的正文?您发送的 JSON 有多大?你试过卷曲吗?您的 routes 文件中有什么内容?
  • 确保在发送 JSON 数据时设置正确的内容类型。即应用程序/json。
  • 如果您发布正在发送的 JSON 正文会有所帮助
  • 感谢大家的快速回复。我只发送一个标签 {"name":"Hello"}。我放了 content-type:application/json 但同样的问题,错误的请求并显示了味精。 JSON 为空。

标签: java json post playframework bad-request


【解决方案1】:

您没有发布无效的 JSON,或者您没有设置正确的内容类型。

要检查您的 JSON 是否有效,您可以使用 http://jsonlint.com/

在第二种情况下,您可以将Content-Type: application/json 标头添加到您的请求中,或者您可以使用TolerantJson 代替:

@BodyParser.Of(BodyParser.TolerantJson.class)
public static Result createRutines(){
    // (...)
}

【讨论】:

  • 哇,Json 是有效的 :) 并且设置了内容类型。但是我将您所说的将 Json 更改为 TolerantJson 并且运行良好。但我想了解为什么以这种方式工作而不是其他方式?我是一个想要了解哪种方式更好的人,不仅是为了看到某些东西有效 XD。非常感谢您的帮助
  • @aleyango 我认为 Json 和 TolerantJson 解析器之间的唯一区别是 TolerantJson 不检查 contentType 标头。因此,您可能没有正确传递该标头。
猜你喜欢
  • 2015-10-29
  • 2012-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2014-04-24
相关资源
最近更新 更多