2014-01-12 5 views
2

spring mvc 컨트롤러에 요청을 보내는 데 문제가 있습니다. 내가 가지고 기업 :SpringMVC 400 JSON 데이터 요청이 잘못되었습니다.

public class Person { 
    private String name; 
    private int age; 
    private String city; 
    //..getters setters 

} 

및 SpringMvc 컨트롤러 :

@Controller 
@RequestMapping("/companies") 
public class FirmaController { 
    @RequestMapping(value = "/addPerson", method = RequestMethod.POST, headers = {"Content-type=application/json"}) 
    public String addPerson(@RequestBody Person person) { 
     return "person"; 
    } 
} 

내가 컬와 서버에 요청을 전송하고자 할 때 : 내가 가지고

curl -i -X POST -HContent-Type:application/json -HAccept:application/json http://localhost:8080/api/companies/addPerson -d "{ 'name': 'Gerry', 'age': 20, 'city': 'Sydney' }" 

HTTP/1.1 400 불량 요청 :

HTTP/1.1 400 Bad Request 
Content-Type: text/html;charset=ISO-8859-1 
Cache-Control: must-revalidate,no-cache,no-store 
Content-Length: 1392 
Server: Jetty(8.1.10.v20130312) 

내가 뭘 잘못 했니?

답변

3

이것은 하나의 올바른 : 당신과 함께 동의

curl -i -X POST -HContent-Type:application/json 
-HAccept:application/json 
http://localhost:8080/api/companies/addPerson 
-d '{ "name": "Gerry", "age": 20, "city": "Sydney" }' 
+0

JSON 데이터의 키 값 쌍에 큰 따옴표를 추가 한 것을 볼 수 있습니다. – Chaitanya

+0

아니요 키/값에 큰 따옴표 만 사용하십시오. –

5

보내는 데이터가 유효한 JSON이 아닙니다. 문자열은 큰 따옴표로 묶어야합니다 " 작은 따옴표가 아닌 '이 예제와 같습니다.

이전 버전의 스프링이없는 경우 headers=... 대신 consumes = "application/json"을 사용해야합니다.

+0

. 작은 따옴표도 올 바릅니다. "and \"(이스케이프 문자로 시도한 것과 같은 문제입니다.)/ –

+0

@PiotrSobolewski [사양] (http://www.ietf.org/rfc/rfc4627.txt)에 달리 설명되어 있습니다 .JSON 이름은 –

+0

jackson 매퍼 의존성을 사용하고 있습니까? –

관련 문제