【发布时间】:2014-04-22 12:17:52
【问题描述】:
我对使用 Spring 以及所涉及的所有事情都很陌生,但我正在努力解决这个问题。
我正在尝试使用 Spring MVN 和 Gradle 创建服务来理解 JSON 格式的字符串。这一切都是用Java制作的。 但我根本无法让它正常工作。
这个
@RequestMapping(value = "/toggle")
public @ResponseBody String sendCommand(@RequestParam(value="IP") String IP){
//body
}
是我的控制器中的一个方法,但是,当我发送以下 JSON 格式的字符串时
{"IP":"192.168.1.9"}
我仍然收到响应代码 400。
我尝试了不同的变体,其中一个示例使用 @RequestBody 代替,并为 indata 使用了自己的类。还有一个我收到 HttpEntity 的地方,以查看是否正确收到了字符串。虽然正确接收了字符串,但我无法让我的代码“读取”它。
我可以去localhost:8080/toggle,通过HTTP设置变量,比如:
http://localhost:8080/toggle?IP=192.168.1.9
有效。
您会建议在哪里继续进行故障排除? 提前致谢!
编辑: 哇。非常感谢您的快速回复,我原以为有一两天没有回复,但我在几分钟内就得到了您的帮助。我知道这个网站很好,但你很棒,谢谢!
也就是说,我创建了一个名为 Ident 的新类,它只有一个私有 String 变量,带有构造函数、setter 和 getter。 现在我有
@RequestMapping(value = "/toggle")
public @ResponseBody String sendCommand(@RequestBody Ident ident) {
//body
}
我仍然收到 400 发送相同的字符串。
虽然它可以使用@PathVariable,但我想让它工作,因为现在我只是在试验它。它将用于稍后发送的不仅仅是 IP。
我正在使用 @ComponentScan @EnableAutoConfiguration 在主文件中,这可能与某些事情有关 - 它设置错误?
【问题讨论】:
-
你绝对应该使用@RequestBody。该 JSON 对象是否代表您希望由 Jackson 反序列化的 Java 对象,或者您打算手动解析它?
-
您是否在服务器上获得堆栈跟踪?你检查过日志吗?
-
编辑:嗯,格式坏了,我把这个添加到原始问题中。