2014-04-24 26 views
0

由于编辑一个问题似乎没有碰到更多的答案,我会继续问一个新的线程。Spring webservice不会阅读JSON

事情是,我正在试图用Spring建立一个非常基本的Web服务,我应该能够通过Java发送JSON。

但我对Spring和网络服务一般都很陌生,所以我不知道在哪里排除故障。

老问题:Getting a RESTful webservice with Spring to understand a JSON-string

现在我有这个在我的控制器

@RequestMapping(value = "/toggleB") 
public @ResponseBody String sendCommand(@RequestBody Ident ident) { 
//body 
} 

的订货号级只是有一个字符串为变量,称为IP。

发送此字符串

{"IP":"192.168.1.9"} 

给人的返回码400

事情是,我觉得可能是一些错误,或缺少,在的build.gradle(或pom.xml的)。 一个正确的Gradle/Spring项目应该如何组织?

我的主要方法是可运行的,看起来像这样:

import org.springframework.boot.autoconfigure.EnableAutoConfiguration; 
import org.springframework.boot.SpringApplication; 
import org.springframework.context.annotation.ComponentScan; 

@ComponentScan 
@EnableAutoConfiguration 
public class mainFile { 
    public static void main(String[] args) { 
     SpringApplication.run(mainFile.class, args); 
    } 
} 

我不使用任何Bean作为配置,可能这是什么失败我的程序?

再次感谢您的回复! 我希望我不会通过继续这样的问题来破坏规则,但我不知道如何碰撞旧的问题。 啊......对一个网站来说全新的缺点,呵呵。

+0

您可以添加更多关于如何发送请求的信息。 –

+0

我尝试通过Java中的连接,并将该字符串作为流发送。 和Firefox的插件,让我做这些请求。 两者都取得了相同的结果。 – Mattedatten

回答

2

如果您在请求正文中发送JSON,请将其设置为POST或PUT请求,同时添加标头以接受json。将Json作为字符串取出,然后使用Json解析器将其解析为JsonNode或任何您想要的内容。最后返回ResponseEntity。以下是一个示例代码。如有需要,请在评论中询问具体问题以进行澄清。

@RequestMapping(value = "/toggleB", method = RequestMethod.POST, headers = "Accept=application/json") 
public ResponseEntity<java.lang.String> sendCommand(@RequestBody String ident) { 

    // Do your stuff 

    return new ResponseEntity<String>("Some response data/message",new HttpHeaders(), HttpStatus.OK); 
} 
+1

非常感谢。我希望能够通过@RequestBody直接将它工作到一个类,但这同样适用。而且我让Gson解析了JSON数据,所以现在一切都按照它应该进行。非常感谢! – Mattedatten