AngularJS使用JAX-RS休息Web服务

时间:2016-08-23 11:14:37

标签: java angularjs json web-services rest

这是我第一次在我的Web应用程序中使用Java后端。我有一个Jax-rs webservice,我试图用我的AngularJS应用程序消费

AngularJS致电

$http({
    url : REST_END_POINT + '/checkuser',
    method : "GET",
    data : {
        'userId' : credentials.username,
        'pwd' : credentials.password
    },
    dataType : "json",
    headers : {
        "Content-Type" : "application/json"
    }
});

web服务

@GET
@Produces("application/json")
@Consumes("application/json")
@Path("checkuser/")
public string getCheckUser(@QueryParam("userId") String userId, @QueryParam("pwd") String pwd){
    try{
        if(port != null){
            boolean result = port.checkUser(userId, pwd);
            return new java.lang.Boolean(result).toString();
        }
    }catch(Exception ex){
        //TODO
    }
    return null;
}

userIdpwd始终为null

使用Firebug,我可以看到数据包含

Object{
    userId="aaa",
    pwd="aa"
}

我也试过发送这些数据的JSON.stringify

"{"userId":"aaa","pwd":"aa"}"

2 个答案:

答案 0 :(得分:2)

我相信你试图访问你的userID和pwd的方式是不正确的,你正在使用@QueryParam,它会查找userID和pwd作为GET请求的查询参数,如下所示:

http://myservice:port/checkuser?userId=myuserid&pwd=pass

如果您将GET请求更改为

$http({
url : REST_END_POINT + '/checkuser',
method : "GET",
params : {
    'userId' : credentials.username,
    'pwd' : credentials.password
},
dataType : "json",
headers : {
    "Content-Type" : "application/json"
}
});

然后你应该有更多的运气。

但是我不建议这种方法,因为它可能是不安全的。相反,我会尝试利用现有的身份验证系统,而不是自己动手,因为这些现有的身份验证系统会更加安全。

答案 1 :(得分:0)

您可以使用Jackson api将json转换为Java对象/从Java对象转换。

Jackson包含简单的映射器方法,可以将json属性隐式映射到Java类成员变量。

而不是@querypram使用具有userId和pwd

字段的Java类