Je suis en train d'essayer d'obtenir les données du post en Java. On dirait que cela devrait être une des choses les plus simples à faire, non? Je veux dire, HttpServletRequest.getParameter doit le faire, non? Alors comment obtenir les données brutes du post?
J'ai trouvé HttpServletRequest get JSON POST data et utilisé le code de Kdeveloper pour extraire les données du post à partir d'une requête. Ça fonctionne, mais il y a un hic : je ne peux obtenir ces données en post qu'une seule fois.
Voici la méthode que j'ai faite à partir du code de Kdeveloper:
public static String getPostData(HttpServletRequest req) {
StringBuilder sb = new StringBuilder();
try {
BufferedReader reader = req.getReader();
reader.mark(10000);
String line;
do {
line = reader.readLine();
sb.append(line).append("\n");
} while (line != null);
reader.reset();
// do NOT close the reader here, or you won't be able to get the post data twice
} catch(IOException e) {
logger.warn("getPostData couldn't.. get the post data", e); // This has happened if the request's reader is closed
}
return sb.toString();
}
Auparavant, j'avais fermé le lecteur à la fin de cette méthode, mais cela provoquait des exceptions lorsque la méthode était exécutée plus d'une fois sur la même demande. Sans le fermer, aucune exception ne se produit, mais la méthode renvoie une chaîne vide.
Honnêtement, il devrait tout simplement y avoir une méthode exposée req.getPostData() - est-ce que personne n'a pensé que ce serait utile?
Alors comment puis-je écrire cette méthode de manière à ce qu'elle renvoie toujours les bonnes données post?