POST与Restlet框架的Java

时间:2014-09-26 15:30:29

标签: java rest restlet restlet-2.0

我可以毫无问题地进行GET。 使用POST请求尝试时,我收到此消息:

  

内部服务器错误
  服务器遇到意外情况,导致无法完成请求

我正在使用Chrome的简单REST客户端扩展程序对其进行测试,但我在实际应用程序中收到相同的消息。

这是我的帖子:

   @Post
   public StringRepresentation pepe(Representation entity) {
      StringRepresentation result = this.users();  

      // Parse the given representation and retrieve data
      Form form = new Form(entity);  
      String action = form.getFirstValue("action");  

      if(action.equals("add")){
        //nothing
      }

      Db.closeConnection();

      return result;
   }

这是我的@Get正常工作:

 @Get
   public StringRepresentation pepe() {
      String action = getQuery().getValues("action");
      StringRepresentation result = null;

      result = this.users();

      Db.closeConnection();

      return result;
   }

有趣的是:每当我删除条件if(action.equals("add")){(里面是空的)时,POST都能正常工作。 这可行:

   @Post
   public StringRepresentation pepe(Representation entity) {
      StringRepresentation result = this.users();  

      // Parse the given representation and retrieve data
      Form form = new Form(entity);  
      String action = form.getFirstValue("action");  

      Db.closeConnection();

      return result;
   }

发生了什么事?看起来很随意!

1 个答案:

答案 0 :(得分:0)

是的,如果您在表单有效内容中没有条目action,则您的变量action将为空。

您可以注意到Restlet提供了一个方法getFirstValue,其中包含一个默认值参数:

String action = form.getFirstValue("action", "defaultActionValue");  

这可以帮助您不要NullPointerException

否则,您似乎尝试为方法POST实施多个操作。我认为这篇博文可以为您提供一些额外的提示:https://templth.wordpress.com/2015/03/20/handling-multiple-actions-for-a-post-method/

希望它可以帮到你, 亨利