Мое приложение для флаттера отправляет запрос http в мой бэкэнд google-app-engine.В этом запросе голос пользователя по простому вопросу или «вопрос» отправляется и затем сохраняется в базе данных mysql.Когда это будет сделано, пользователь увидит другой вопрос и снова проголосует.Итак, вопрос, голосование, вопрос, голосование, вопрос, голосование и тд.
Теперь пользователь не должен видеть один и тот же вопрос дважды.Поэтому у моего запроса mysql, который получает другой вопрос, есть условие: «загрузите вопрос, за который пользователь еще не проголосовал».Это прекрасно работает в 99% случаев.Но в редких случаях бывает, что пользователь снова и снова видит один и тот же вопрос подряд примерно 4 или 5 раз, что говорит мне о том, что мое приложение может загрузить «следующий» вопрос (который, в данном случае, снова тот же вопрос)) до голосования был сохранен в моей базе данных.
Чтобы отладить это, я пытаюсь понять технические вещи, происходящие в фоновом режиме.В частности, мне нужно знать, когда код 200 статуса срабатывает после того, как мое приложение отправило голосование пользователей в запросе.Это моя серверная часть, когда отправляется голосование:
иначе if (operation.equals ("voiceFav")) {
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();
}
}
Мой вопрос: Когда срабатывает clientCode 200 codeCode 200?Срабатывает ли он сразу, когда я использую PrintWriter, чтобы записать «полученный голос» в первой строке?Или он срабатывает только когда я закрываю соединение?
Надеюсь, все станет ясно:)