【发布时间】:2019-09-19 08:40:45
【问题描述】:
我的 Flutter 应用向我的 google-app-engine 后端发送了一个 http 请求。在此请求中,发送用户对简单的非此即彼问题的投票,然后将其存储在 mysql 数据库中。完成后,用户会看到另一个问题并再次投票。所以,问题,投票,问题,投票,问题,投票等等。
现在,用户不应该两次看到相同的问题。因此,我得到另一个问题的 mysql 查询有一个条件说“下载用户尚未投票的问题”。这在 99% 的情况下都非常有效。但在极少数情况下,用户会一次又一次地连续看到相同的问题 4 或 5 次,这告诉我我的应用程序可能会下载“下一个”问题(在这种情况下又是同一个问题) ) 在投票存储在我的数据库中之前。
为了调试它,我试图了解后台发生的技术问题。具体来说,我需要知道在我的应用程序向用户发送请求投票后何时触发 200 状态码。这是发送投票时我的服务器端部分:
else if (operation.equals("voteFav")){
out.println("vote received");
// get userID and favID
Integer userID = Integer.valueOf(request.getParameter("userID"));
String creatorID = request.getParameter("creatorID");
Integer favID = Integer.valueOf(request.getParameter("favID"));
String voter = request.getParameter("voterName");
String winpic = request.getParameter("winpic");
try{
Connection conn = DriverManager.getConnection(mysqlUrl);
PreparedStatement ps;
ResultSet rs;
String query;
// prepare Statement
if(winpic.equals("1")) query = "INSERT INTO faved (favID, userID, voting) VALUES (?,?,1)";
else if(winpic.equals("2")) query = "INSERT INTO faved (favID, userID, voting) VALUES (?,?,2)";
else query = "INSERT INTO faved (favID, userID, voting) VALUES (?,?,-1)";
ps = conn.prepareStatement(query);
ps.setInt(1, favID);
ps.setInt(2, userID);
// send vote to database
ps.execute();
ps.close();
// close connection
out.flush();
conn.close();
} catch (Exception e) {
out.print("Fehler voting: " + e);
out.flush();
}
}
我的问题是:客户端 statusCode 200 何时触发?当我使用 PrintWriter 在第一行写回“收到的投票”时,它会立即触发吗?还是只有在我关闭连接时才会触发?
希望清楚:)
【问题讨论】:
标签: java google-app-engine flutter