我知道这是一个基本问题,但我无法在任何地方找到答案,我不可能通过反复试验来做到这一点。我有Android应用程序,想要通过+1更新数据存储区中的实体。我向谷歌应用引擎发送请求,我获得实体,更新它+1,将实体放到数据存储区并使用response.getWriter().println("OK");
向Android应用程序发送确认,一切正常,但如果Android应用程序在发送请求后失去连接怎么办,谷歌应用引擎将获得更新实体+1的请求,但确认不会触及Android应用。即使我在Android应用中未获得"OK"
确认,实体也会更新+1吗?如果是,那么防止这种情况的最佳做法是什么?
提前致谢
代码:
public class Score extends HttpServlet {
public void doPost(HttpServletRequest req, HttpServletResponse resp) throws IOException {
String update = req.getParameter("update"); //update = 1
resp.getWriter().println(add(Integer.valueOf(update)));
}
public String add(int update) {
// ...
Entity entity = datastore.get(key);
int score = ((Number) entity.getProperty("Score")).intValue();
score += update;
entity.setProperty("Score", score);
datastore.put(entity);
return "OK";
}
}
答案 0 :(得分:0)
无论确认是否到达客户端,只要您告知数据存储区,实体就会立即更新。
我不确定你为什么要阻止它(这是一个非常不寻常的要求),但解决方案需要两个调用:一个用于准备更改,第二个用于提交。