Obtenir la chaîne de demande brute à partir de HttpServletRequest

Est-il possible d’obtenir la requête HTTP brute à partir de l’object HttpServletRequest? Je veux voir la demande brute comme une chaîne si possible.

Je dois obtenir le texte intégral de la demande. Dans ce cas, il s’agit d’une demande POST, de sorte que l’URL n’aide pas. Cela fait également partie d’un formulaire en plusieurs parties, je ne peux donc pas simplement appeler “getParameterNames ()” ou “getParameterValues ​​()”.

Je vous remercie,

On dirait que vous avez besoin d’un filtre de servlet . Il n’existe pas de méthode standard pour gérer les données multipart/form-data , vous devez donc veiller à mettre en cache ces données de manière appropriée lors du wrapping de HttpServletRequest .

Vous pouvez lire la requête HTTP brute en faisant:

 ServletInputStream in = request.getInputStream(); 

puis utilisez les méthodes de read habituelles de InputStream.

J’espère que cela pourra aider.

On dirait que vous faites un dépannage. Pourquoi ne pas simplement supprimer le composant de formulaire en plusieurs parties pendant que vous consultez les données de formulaire brutes. Vous pouvez utiliser l’extrait JSP suivant pour construire les données de formulaire.

 <% Enumeration en = request.getParameterNames(); String str = ""; while(en.hasMoreElements()){ String paramName = (String)en.nextElement(); String paramValue = request.getParameter(paramName); str = str + "&" + paramName + "=" + URLEncoder.encode(paramValue); } if (str.length()>0) str = str.subssortingng(1); %> 

ou si vous pouvez écrire un intercepteur pour convertir les noms de paramètre et les valeurs en object de format chaîne et le définir dans un contexte de requête, ou le filtre est également une bonne idée.

Si vous voulez obtenir la requête complète dans une chaîne, vous pouvez le faire avec une ligne de code en utilisant la bibliothèque apache IOUtils.

 Ssortingng mySsortingng = org.apache.commons.io.IOUtils.toSsortingng(request.getInputStream());