这是我第一次在我的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;
}
userId
和pwd
始终为null
使用Firebug,我可以看到数据包含
Object{
userId="aaa",
pwd="aa"
}
我也试过发送这些数据的JSON.stringify
:
"{"userId":"aaa","pwd":"aa"}"
答案 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类