¿Hay alguna manera conveniente de leer y analizar datos de la solicitud entrante.Manera conveniente de analizar los parámetros entrantes multipart/form-data en un servlet
cliente por ejemplo iniciado solicitud POST
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);
No soy capaz de conseguir parámetro utilizando request.getParameter("paramName")
. El siguiente código
BufferedReader reader = new BufferedReader(new InputStreamReader(
request.getInputStream()));
StringBuilder sb = new StringBuilder();
for (String line; (line = reader.readLine()) != null;) {
System.out.println(line);
}
sin embargo muestra el contenido para mí
-----------------------------29772313742745
Content-Disposition: form-data; name="name"
J.Doe
-----------------------------29772313742745
Content-Disposition: form-data; name="email"
[email protected]
-----------------------------29772313742745
¿Cuál es la mejor manera de analizar la petición entrante? No quiero escribir mi propio analizador, probablemente haya una solución lista.
Cuidado. Parte de la documentación en el sitio de apache es incorrecta. Por ejemplo, dicen que puede llamar a setRepository() en un objeto FileItemFactory que es falso porque cualquier Objeto que implemente FileItemFactory tiene solo un método: createItem(). Así que asegúrese de leer los javadocs también. – Cheruvim
'getParts()' siempre devuelve cero elementos. ¿Por qué es tan difícil recuperar formularios multiparte en Java y Servlet 3.0? No puedo creerlo! – basZero
@basZero: la respuesta a la pregunta duplicada ya explica cuándo estaría vacía. – BalusC