我发现了10或20个类似问题,我尝试了许多答案,但似乎没有一个对我有用..
这是角度服务代码:
app.factory('service',['$http','$q', function($http,$q){
return {
get: function(m){
return $http.post('path/getJSON',m).then(
function(r){
console.log(r.data);
return r.data;
}
);
},
getY: function(m){
return $http({
method : 'POST',
url : 'path/getJSON',
headers: {'Content-Type': 'application/json'},
data : JSON.stringify(m)
}).then(
function(r){
console.log(r.data);
return r.data;
}
);
},
getZ: function(m){
return $http.post('path/getJSON',JSON.stringify(m)).then(
function(r){
console.log(r.data);
return r.data;
}
);
}
};
}]);
我试图在我的控制器中调用这三种方法中的任何一种,但结果是相同的:415。我也尝试过使用和不使用JSON.stringify()函数的任何一种
数据(m)构建如下:
m = {param : value, param2 : value2 etc}
以下是Java中应该处理此POST的控制器方法:
@RequestMapping(value="/getJSON", consumes = {"application/json;charset=UTF-8"},
method=RequestMethod.POST)
@ResponseStatus(value=HttpStatus.OK)
public ResponseEntity<List<SmtElse>>getFlights(@RequestBody CustomJSONObj jsonObj){
HttpHeaders h= new HttpHeaders();
h.add("Access-Control-Allow-Origin", "*");
List<SmtElse> list= new ArrayList<SmtElse>();
System.out.println(jsonObj);
return new ResponseEntity<List<SmtElse>>(list,h, HttpStatus.OK);
}
CustomJSONObj只有String属性,getter,setter和constructors。我还尝试在@RequestMapping或其他形式中添加一些属性。
抱歉可能重复。我知道有很大的机会,但我找不到任何问题的答案。
<dependency>
<groupId>com.fasterxml.jackson.core</groupId>
<artifactId>jackson-core</artifactId>
<version>2.4.4</version>
</dependency>
<dependency>
<groupId>com.fasterxml.jackson.core</groupId>
<artifactId>jackson-databind</artifactId>
<version>2.4.4</version>
</dependency>
答案 0 :(得分:0)
您需要使用@RestController或@Controller和@ResponseBody注释该类。
请参阅JavaDoc和Difference between spring @Controller and @RestController annotation