Existe-t-il un moyen pratique de lire et d'analyser les données d'une requête entrante?Manière pratique d'analyser les paramètres entrants multipart/form-data dans une servlet
client demande Initié par exemple après
URLConnection connection = new URL(url).openConnection();
connection.setDoOutput(true);
connection.setRequestProperty("Content-Type", "multipart/form-data; boundary=" + boundary);
PrintWriter writer = null;
try {
OutputStream output = connection.getOutputStream();
writer = new PrintWriter(new OutputStreamWriter(output, charset), true); // true = autoFlush, important!
// Send normal param.
writer.println("--" + boundary);
writer.println("Content-Disposition: form-data; name=\"param\"");
writer.println("Content-Type: text/plain; charset=" + charset);
writer.println();
writer.println(param);
Je ne suis pas en mesure d'obtenir à l'aide request.getParameter("paramName")
param. Le code suivant
BufferedReader reader = new BufferedReader(new InputStreamReader(
request.getInputStream()));
StringBuilder sb = new StringBuilder();
for (String line; (line = reader.readLine()) != null;) {
System.out.println(line);
}
affiche cependant le contenu pour moi
-----------------------------29772313742745
Content-Disposition: form-data; name="name"
J.Doe
-----------------------------29772313742745
Content-Disposition: form-data; name="email"
[email protected]
-----------------------------29772313742745
Quelle est la meilleure façon d'analyser la demande entrante? Je ne veux pas écrire mon propre analyseur, il y a probablement une solution prête. Les demandes codées ne sont en effet pas supportées par défaut par l'API Servlet avant la version 3.0.
Soyez prudent. Une partie de la documentation sur le site Apache est erronée. Par exemple, ils disent que vous pouvez appeler setRepository() sur un objet FileItemFactory qui est false, car tout objet qui implémente FileItemFactory a une seule méthode: createItem(). Assurez-vous donc de lire également les javadocs. – Cheruvim
'getParts()' retourne toujours zéro élément. Pourquoi est-il si difficile de récupérer des formulaires en plusieurs parties dans Java et Servlet 3.0? Je ne peux pas le croire! – basZero
@basZero: la réponse à la question en double explique déjà quand il serait vide. – BalusC