2014-04-24 68 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