我可以毫无问题地进行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;
}
发生了什么事?看起来很随意!
答案 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/。
希望它可以帮到你, 亨利