将 Json Object 从 AngularJs 发布到 java JAX-RS 服务



我在谷歌上搜索了几个小时,但我仍然找不到解决方案。

这是我的java代码

@POST
public String doLogin(User user) {
System.out.println(" = " + user.getUsername());
return "";
}

@XmlRootElement
@XmlAccessorType(XmlAccessType.FIELD)
public class User {
String username;
String password;
public String getUsername() {
return username;
}
public void setUsername(String username) {
this.username = username;
}
public String getPassword() {
return password;
}
public void setPassword(String password) {
this.password = password;
}
}

这是我的 AngularJs 代码

angular.module('notesApp', []).controller('MainCtrl', ['$http', function($http) {
var self = this;
self.submit = function() {
$http({
method: 'POST',
url: 'http://127.0.0.1:8080/Test/app/login',
headers : {'Content-Type': 'application/json'},
data: self.user //forms user object
})
.then(function(response) {
console.log(response.data);
return response.data;
}, function(response) {
});
}
}]);

我的错误消息是: SEVERE:Java 类实体的消息正文读取器。用户和 Java 类型类实体。用户和 MIME 媒体类型应用程序/json;找不到 charset=UTF-8,因为我无法访问 java 代码中的"用户"对象。

你能弄清楚我做错了哪一部分吗?非常感谢。

您需要从POST正文中读取,而不是Query Params.

您可以使用它:

@POST
public String doLogin( User user) {
System.out.println(" = " + user.getUsername());
return "";
}

@QueryParam用于查询参数,您将作为?user=xyz@gmail.com传递

删除查询参数 您将获得一个序列化字符串。 将其反序列化为用户。

@POST
public String doLogin(User user) {
System.out.println(" = " + user.getUsername());
return "";
}

您正在POST上设置data字段。 这将设置 HTTP正文,而不是 HTTP 查询参数。

检查浏览器调试器网络面板,以确保将预期内容发送到服务器。 将打开它,然后"发送"您的用户并查看发送的内容。 这个对象看起来是否与 java 中的用户所期望的完全一样?

最新更新