En ASP, hay atributos request.form
y request.queryString
, pero en Java. Parece que tenemos una sola colección, que se puede acceder a través de request.getParamaterMap
, getParametersNames
, etc. getParameterValues
¿Cómo determinar si un parámetro ha sido "publicado" o "generado" desde Java?
¿Hay alguna manera de saber qué valores se han publicado y cuáles se han especificado en la URL?
PS:
Lo que estoy tratando de lograr es hacer una página que puede manejar la siguiente situación
- Lea las variables que vinieron de la cadena de consulta (GET)
- Lea una sola publicación con un nombre determinado ("xml", por ejemplo).
- Si esa publicación falta, lea todo el cuerpo (con
request.getReader()
).
estoy usando Tomcat 6.
De acuerdo con lo que he visto hasta ahora, si bien expedir un request.getReader()
, valores POST ya no aparece en la colección getParamater
, sin embargo, los parámetros de cadena de consulta siguen ahí.
Por otro lado, si emito alguno de los métodos getParameters
, getReader
devuelve cadena vacía.
Parece que no puedo comer la torta y comerla también.
tanto, creo que la solución es la folowwing:
- leer el cuerpo con
getReader
. - A ver si el mensaje XML está allí (lado negativo, tengo que analizar manualmente el cuerpo.
- Si es así, obtener el cuerpo del mensaje HTTP y deshacerse de la "xml =" parte.
- Si no es , bueno, acaba de obtener el cuerpo
- leer los parámetros de cadena de consulta a través
request.getParameter
Cualquier idea mejor
- PS:.? ¿alguien sabe cómo analizar el cuerpo utilizando el mismo método utilizado por
HttpServlet
? - PS: Here es una función de decodificación ASP. ¿Debería reescribirlo en Java?
- PS: También found (no tienen una máquina para probar que en este momento)
Solo para aclarar las cosas.El problema parece ser que con getParameter
te valores, así como valores pasados con la URL informados, considere el siguiente ejemplo:
<%@page import="java.util.*"%>
<%
Integer i;
String name;
String [] values;
for (Enumeration e = request.getParameterNames(); e.hasMoreElements();) {
name = (String) e.nextElement();
values = request.getParameterValues(name);
for (i=0; i < values.length; i ++) {
out.println(name + ":" + values[i] + "<br/>");
}
}
%>
<html>
<head><title>param test</title>
</head>
<body>
<form method="post" action="http://localhost:8080/jsp_debug/param_test.jsp?data=from_get">
<input type="text" name="data" value="from_post">
<input type="submit" value="ok">
</form>
</body>
</html>
la salida de este código es
data:from_get
data:from_post
...
Parece que con el fin para encontrar el parámetro que vino de donde, tengo que marcar request.getQueryString
.
qué servidor está utilizando? el sol HttpServer? – gubby
Debería obtener la URL completa y deserializar los parámetros. si su parámetro deseado está allí, es un GET. Si no está allí, pero existe, entonces es un parámetro POST. – PSyLoCKe