Restlet:在验证程序中检索http正文

时间:2013-03-06 16:06:52

标签: java api rest post restlet

当我想要在我的Request Verifier中检索帖子的http主体时,它有点重置我的实体,当我想在我的资源类中获取http主体时,我得到一个nullpointer异常。

验证

JsonRepresentation jsonrep;
        try {
            Representation entity = request.getEntity();
            jsonrep = new JsonRepresentation(entity);
            //bug: entity resets when getJsonObject is being called.
            JSONObject jsonobj = jsonrep.getJsonObject();
            if(companyId != jsonobj.getInt("id_companies")){
                return Verifier.RESULT_INVALID;
            }
...

AppResource

@Post
public Representation addApp(Representation rep) throws Exception{
//rep is null
    JsonRepresentation jsonrep = new JsonRepresentation(rep);

当我不打电话时:

                JSONObject jsonobj = jsonrep.getJsonObject();

它运作正常。

是否有人面临同样的问题或得到解决方案?

提前致谢!

1 个答案:

答案 0 :(得分:2)

实际上,默认情况下,表示是一个不存储表示内容的InputRepresentation。

在您的情况下,最简单的方法是将表示包装到验证程序中的StringRepresentation中:

Representation entity = request.getEntity();
StringRepresentation sEntity = new StringRepresentation(entity);
request.setEntity(sEntity);

JsonRepresentation jsonrep = new JsonRepresentation(sEntity);

然后,字符串表示将自动提供给您的服务器资源方法...

希望它对你有所帮助。 亨利