POST 500(内部服务器错误) - AngularJS - Jersey API

时间:2016-02-22 09:11:55

标签: java angularjs rest jersey

我有一个AngularJS Web应用程序调用我自己的Java Jersey API。现在一切都在localhost上运行。

这是Angular电话:

function Create(user) {
        return $http.post('http://localhost:8080/NobelGrid/api/users/create/', user).then(handleSuccess, handleError('Error creating user'));
}

这是我的REST代码片段:

@Path("/create")
@POST
@Produces("application/json")
public Response create(String data) {

    UserDataConnector connector;
    JSONObject response = new JSONObject(data);

    User userToCreate = new User(response.getString("surname"), response.getString("name"),
            response.getString("mail"), response.getString("username"), response.getString("password"), 0);

    try {

        connector = new UserDataConnector();
        connector.createUser(userToCreate);
    } catch (IOException e) {
        e.printStackTrace();
    }

    return Response.status(Response.Status.OK) // 200
            .entity(userToCreate)
            .build();

}

我只是在我自己的MySql DB上插入一个用户。

程序顺利因为用户被添加到Db中,无论如何它都会返回该错误。

enter image description here

enter image description here

请有人帮助我吗?

3 个答案:

答案 0 :(得分:0)

试试这个:

function Create(user) {
    return $http({
             'url':'/NobelGrid/api/users/create',
             'method': POST,
             'data': user
           }).then(function () {
             // .....
           });
}

答案 1 :(得分:0)

$http.post('http://localhost:8080/NobelGrid/api/users/create/', user).then(handleSuccess, handleError('Error creating user'));

var config = {
        headers: { 'Content-Type': 'application/x-www-form-urlencoded'}
};

$http.post('http://localhost:8080/NobelGrid/api/users/create/', $httpParamSerializer(user), config).then(handleSuccess, handleError('Error creating user'));

你需要注入$ httpParamSerializer。

答案 2 :(得分:0)

问题是你正在使用注释@Produces而不是@Consumes,所以你不能传递一个JSON,如果你认为你不应该。{/ p>