我在GET REST调用中从js文件发布了两个Headers:
allstaffworking: function(_getstaff){
var currentToken = _GetToken();
var Headers = {
token: currentToken.tokenStaff,
};
var HeaderId = {
idtoken: currentToken.idtokenStaff,
};
console.log("idtoken"+Headers);
if (currentToken !== null) {
$http({
method : 'GET',
headers: Headers, HeaderId,
url : REST_URL+'staff/working'
}).then(function successCallback(response) {
_getstaff(response)
}, function errorCallback(response) {
console.log(response.statusText);
});
} else {
console.log("NON SEI LOGGATO!!!");
}
},
标题是:
var Headers = {
token: currentToken.tokenStaff,
};
var HeaderId = {
idtoken: currentToken.idtokenStaff,
};
这是由REST_URL +'staff / working'调用的java页面:
public List<Staff> getStaff()
{
List<Staff> listOfStaff=sDao.getAll(Staff.class);
return listOfStaff;
}
@GET
@Path("/working")
@Produces(MediaType.APPLICATION_JSON)
@Consumes("application/json")
public List<Staff> getWStaff(@HeaderParam("token") String token, @HeaderParam("idtoken") int tokenid)
{
s = (Staff) sDao.getById(tokenid, Staff.class);
st = (StaffType) sDao.getById(s.getStaffType().getIdstaffType(), StaffType.class);
if (ex && st.getIdstaffType()==2){
List<Staff> listOfWStaff=stfDao.getAllW();
return listOfWStaff;
}
else
return null;
}
将两个标题放在:@HeaderParam("token") String token, @HeaderParam("idtoken") int tokenid
第一个Header Param工作,第二个不起作用,看看这个debug的图像
如何从图像中看到,idtoken的标头值为11
。
因此我的java类应该使用第二个@HeaderParman这样的int。但它不起作用,错误500.我尝试以这种方式手动插入“11”:
s = (Staff) sDao.getById(11, Staff.class);
这样它就有效!!然后,错误是当我采用第二个@HeaderParam时,我也尝试使用tokenid作为String,使用Integer.parseint(tokenid)
转换它
但它没有改变。
我希望有人可以帮助我
答案 0 :(得分:0)
$ http config对象的header属性将一个对象作为param,因为你传递了两个对象,它选择了第一个对象。理想情况下你应该传递这样的东西:
$http({ ... headers: { token: currentToken.tokenStaff, idtoken: currentToken.idtokenStaff } ... });
此外,我很好奇为什么你没有得到错误,你提供Headers和HeaderId作为逗号分隔。