【发布时间】:2013-11-08 08:47:00
【问题描述】:
我正在开发必须接收多个信息的 REST 服务。在这种情况下,两个对象和一个属性。
这是我正在测试 POST 请求的 javascript
var user = {
username: "admin",
password: "admin"
};
var userToSubscribe = {
username: "newuser",
password: "newpassword",
email: "user@1and1.es"
};
var openid = "myopenid";
$.ajax({
url: '/myportal/rest/subscribeUser.json',
type: 'POST',
dataType: 'json',
contentType: 'application/json',
mimeType: 'application/json',
data: JSON.stringify({ user: user, userToSubscribe: userToSubscribe, openid: openid})
});
POST 请求:
JSON
openid
"myopenid"
user
Object { username="admin", password="admin"}
userToSubscribe
Object { username="newuser", password="newpassword", email="user@1and1.es"}
Source
{"user":{"username":"admin","password":"admin"},"userToSubscribe":{"username":"newuser","password":"newpassword","email":"user@1and1.es"},"openid":"myopenid"}
以及处理 POST 的控制器:
@RequestMapping(method=RequestMethod.POST, value="/subscribeUser.json")
public @ResponseBody Message subscribeUser(@RequestBody("user") User user, @RequestBody("userToSubscribe") User userToSubscribe, @RequestParam String openid){
...
}
错误是
POST subscribeUser.json 400 请求不正确 localhost:8080 990 B [::1]:8080
我做错了什么?
谢谢
【问题讨论】:
-
servlet 容器日志中是否存在异常?
-
感谢@Jk1 回复我。日志中没有异常。似乎 POST 格式错误并且没有到达控制器:/ 但我不知道我做错了什么。
-
即使请求在到达控制器之前被拒绝,通常也会记录异常。如果是 Tomcat(例如),它将默认进入 catalina.out。我建议寻找服务器端异常。它也可能是一些中间网络代理,例如代理,它在目标服务器之前很久就拒绝了请求。
-
如果我简化方法只包括用户和帖子,而不是直接在数据中包含 Json.Stringfy:'{"user":{"username":"john","password" :"johnjohn"}}' 到达控制器但未填充对象用户。
标签: java json spring spring-mvc