繁体   English   中英

AngularJS使用JAX-RS rest Web服务

[英]AngularJS consumes JAX-RS rest web service

这是我第一次在Web应用程序中使用Java后端。 我有一个尝试通过AngularJS应用程序使用的Jax-rs Web服务

AngularJS调用

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

网络服务

@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"}"

我认为您尝试访问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"
}
});

那你应该有更多的运气。

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

您可以使用Jackson api将json与Java对象转换。

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

代替@querypram,使用具有字段作为userId和pwd的Java类。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM